首页 > 解决方案 > 如何让这个批处理过程正确使用用户输入?

问题描述

我们在我的工作场所使用了一堆远程驱动器,我正在开发一个包罗万象的驱动器映射器 .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。关于命令行如何接受和使用变量,我有什么不明白的地方吗?我需要改变什么才能让它按我需要的方式工作?

标签: batch-filecommand-line-interfacenetwork-drive

解决方案


您应该将变量包装起来,%让系统将它们识别为变量而不是纯文本:

我还建议您首先验证驱动器号尚未在使用中。

@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%


推荐阅读