【发布时间】:2015-02-19 15:04:16
【问题描述】:
我正在使用SHIFT 遍历所有命令行参数。我得到ECHO is off. 的结果。它可能会打印空变量。
:argLoopStart
SET paramName=
SET arg=%1
IF -%arg%-==-- GOTO argLoopEnd
IF %arg:~0,2%==-- (
SET paramName=%arg%
ECHO %arg%
ECHO %paramName%
)
SHIFT
GOTO argLoopStart
:argLoopEnd
通过运行命令fake-command --dbs=mydbname,我得到了这个:
--dbs
ECHO is off.
根据上面的代码,ECHO %arg% 打印 --dbs 和 ECHO %paramName% 打印 ECHO is off。 SET paramName=%arg% 的行没有按我的预期工作。 %parameName% 也应该打印 --dbs。但是,它似乎打印了一个空变量。
【问题讨论】:
-
您为什么期望
%paramName%是--dbs而不是--dbs=mydbname? -
--dbs=mydbname等于--dbs mydbname。=被编译器忽略。如您所见,%paramName%应该与打印--dbs的%arg%相同,因为SET paramName=%arg%行。
标签: windows batch-file arguments command-line-arguments