如何处理批处理文件的输入参数?

时间:2012-12-04 21:39:34

标签: windows cmd batch-file

当我调用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

3 个答案:

答案 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

实际上,您现在可以删除SHIFTGOTO 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