当我调用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
答案 0 :(得分:0)
如果设置了%1,则必须转到继续标签。
答案 1 :(得分:0)
如果参数提供正确,则需要跳过: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
和GOTO Loop
;正如@dbenham在下面的评论中发表的那样,它是无法访问的代码。这也消除了:Loop
本身,因为它从未使用过。这会将其减少为:
IF "%1"=="" GOTO Prompt
SET VAR=%1
GOTO Continue
:Prompt
set /p VAR="Check which value? "
GOTO Continue
:Continue
答案 2 :(得分:0)
接受的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