Batch file 如何使此批处理过程正确使用用户输入?

Batch file 如何使此批处理过程正确使用用户输入?,batch-file,command-line-interface,network-drive,Batch File,Command Line Interface,Network Drive,我们在我的工作场所使用了大量的远程驱动器,我正在开发一个全面的驱动器映射器.bat文件,以帮助技术水平较低的人映射驱动器 我目前有一个运行此代码: @net use G: \\u-dom1.u-ssi.net\DFSRoot05784 /persistent:yes @pause 成功地将DFSRoot05784驱动器映射到G:字母 我试图做的是允许用户提供驱动器号和映射地址,然后代码使用这些地址执行相同的操作。目前,我提出了以下建议: @ Echo Create new drive map

我们在我的工作场所使用了大量的远程驱动器,我正在开发一个全面的驱动器映射器.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

它成功地请求一个驱动器号和映射地址,但后来我得到一个错误。关于命令行如何接受和使用变量,是否有一些我不理解的地方?我需要更改什么才能使其按我所需的方式工作?

您应该将变量包装在
%
中,以便系统将其标识为变量而不是纯文本:

我还建议您首先验证驱动器号是否尚未使用

@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


此外,这假设用户实际键入了完整地址。i、 e
\\server\path
将存储在变量
%driveAddress%

中。我建议您不要只接受最终用户输入了实际的驱动器号,或者即使他们输入了驱动器号,也不要接受他们的选择实际可用。要么向他们提供一份可用信函列表,要么提供不可用信函来指导他们;或者在映射之前,在后台验证他们的输入及其可用性。