batch-file - 如何让这个批处理过程正确使用用户输入?
问题描述
我们在我的工作场所使用了一堆远程驱动器,我正在开发一个包罗万象的驱动器映射器 .bat 文件,以帮助技术水平较低的人映射驱动器。
我目前有一个运行此代码:
@net use G: \\u-dom1.u-ssi.net\DFSRoot05784 /persistent:yes
@pause
这成功地将 DFSRoot05784 驱动器映射到 G: 字母。
我正在尝试做的是允许用户提供驱动器号和映射地址,然后代码使用它们来执行相同的操作。目前我想出了这个:
@ Echo Create new drive mapping
set /p driveLetter= "Choose a drive letter"
set /p driveAddress= "Enter a drive address"
@net use driveLetter: driveAddress /persistent:yes
@pause
它成功地要求提供驱动器号和映射地址,但之后我收到错误 67。关于命令行如何接受和使用变量,我有什么不明白的地方吗?我需要改变什么才能让它按我需要的方式工作?
解决方案
您应该将变量包装起来,%
让系统将它们识别为变量而不是纯文本:
我还建议您首先验证驱动器号尚未在使用中。
@echo off
:begin
echo( & echo Create new drive mapping & echo(
set /p "driveLetter=Choose a drive letter: "
if not exist %driveletter%: (
set /p "driveAddress=Enter a drive address: "
) else (
echo drive "%driveletter%:" already in use please try again.
goto begin
)
net use %driveLetter%: %driveAddress% /persistent:yes
pause
此外,这假定用户实际键入了完整地址。即\\server\path
然后将存储在变量中%driveAddress%
推荐阅读
- python - 字典更新序列元素#0的长度为1;加载页面时需要2
- php - 如何在 Wordpress 中添加具有多个值的短代码属性?
- c# - C#“无法建立连接,因为目标机器主动拒绝它”
- c# - 使用消息安全和客户端凭据类型“Windows”的 Docker 容器内的 WCF
- git - git FETCH_HEAD 短期参考
- php - Jquery Array - AJAX PHP 自动完成输入
- reactjs - 如何使用 React/Redux/Axios 动态更新搜索词?
- css - 从 SASS 列表生成关键帧
- c# - 我可以在 MVC 的同一个视图中使用多个 viewModel 吗?
- abap - 查找功能组的 SAP 修改包括