0

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

3 回答 3

0

如果设置了 %1,您必须转到您的继续标签。

于 2012-12-04T21:42:43.197 回答
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

实际上,您现在可以删除SHIFTand GOTO Loop; 正如@dbenham 在下面的评论中发布的那样,它是无法访问的代码。这也消除了:Loop它本身,因为它从未被使用过。这将其简化为:

IF "%1"=="" GOTO Prompt
  SET VAR=%1
  GOTO Continue
:Prompt
  set /p VAR="Check which value? "
  GOTO Continue
:Continue
于 2012-12-04T21:50:48.637 回答
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
于 2012-12-04T22:56:57.023 回答