当我调用 script.bat 参数时,我正在尝试处理输入参数。如果缺少参数,接收 script.bat 将弹出一个提示,要求用户分配值。但是现在即使我做了 script.bat 编号,提示仍然出现......不知道为什么。
代码:
:Loop
IF "%1"=="" GOTO Prompt
set VAR=%1
SHIFT
GOTO Loop
:Prompt
set /p VAR="Check which value? "
GOTO Continue
:Continue
当我调用 script.bat 参数时,我正在尝试处理输入参数。如果缺少参数,接收 script.bat 将弹出一个提示,要求用户分配值。但是现在即使我做了 script.bat 编号,提示仍然出现......不知道为什么。
代码:
:Loop
IF "%1"=="" GOTO Prompt
set VAR=%1
SHIFT
GOTO Loop
:Prompt
set /p VAR="Check which value? "
GOTO Continue
:Continue
如果设置了 %1,您必须转到您的继续标签。
:Prompt
如果参数提供正确,您需要跳过:
:Loop
IF "%1"=="" GOTO Prompt
SET VAR=%1
GOTO Continue
SHIFT
GOTO Loop
:Prompt
set /p VAR="Check which value? "
GOTO Continue
:Continue
实际上,您现在可以删除SHIFT
and GOTO Loop
; 正如@dbenham 在下面的评论中发布的那样,它是无法访问的代码。这也消除了:Loop
它本身,因为它从未被使用过。这将其简化为:
IF "%1"=="" GOTO Prompt
SET VAR=%1
GOTO Continue
:Prompt
set /p VAR="Check which value? "
GOTO Continue
:Continue
公认的 Ken White 解决方案将起作用,但可以大大简化。
set "VAR=%~1"
if not defined VAR set /p "VAR=Check which value? "
用户可以简单地按下<Enter>
而不输入任何内容。您可以引入 GOTO 循环来强制输入值。
set "VAR=%~1"
:loop
if not defined VAR set /p "VAR=Check which value? "&goto :loop