如何在IF条件下引用Windows批处理文件的第一个参数?
我是cmd批处理文件的新手。我有密码:如何在IF条件下引用Windows批处理文件的第一个参数?,windows,batch-file,cmd,Windows,Batch File,Cmd,我是cmd批处理文件的新手。我有密码: @echo off if {%1} =="1" ( goto 1cmd ) if {%1} =="2" ( goto 2cmd ) if {%1} =="3" ( goto 3cmd ) if {%1} =="" ( echo qwerty ) :1cmd call D:\test\1\1.cmd goto end :2cmd call D:\test\2\2.cmd goto end :3cmd call D:\te
@echo off
if {%1} =="1" (
goto 1cmd
)
if {%1} =="2" (
goto 2cmd
)
if {%1} =="3" (
goto 3cmd
)
if {%1} =="" (
echo qwerty
)
:1cmd
call D:\test\1\1.cmd
goto end
:2cmd
call D:\test\2\2.cmd
goto end
:3cmd
call D:\test\3\3.cmd
goto end
:end
文件名为a.bat
。无论我输入什么参数,a.bat
总是调用1.cmd
原因是什么?这样行吗
@ECHO OFF
if "%~1" =="1" (
goto 1cmd
)
if "%~1" =="2" (
goto 2cmd
)
if "%~1" =="3" (
goto 3cmd
)
if {%1} =="" (
echo qwerty
)
exit /b 0
:1cmd
call D:\test\1\1.cmd
goto end
:2cmd
call D:\test\2\2.cmd
goto end
:3cmd
call D:\test\3\3.cmd
goto end
您需要输入
{2}
来选择选项2。您选择此选项。您需要将{%1}
更改为“%~1”
。然后,当有人进入<代码> 4 >代码>时,你需要考虑这个问题。你能解释一下为什么“%1”或{%1}不起作用吗?我基于外部应用程序的其他脚本,在这个脚本中,一切都正常工作。可能是因为缺少一些指令?@MichałMif something==somethin
直接比较字符串。如果某些参数包含空格,则需要引号,但引号也将被计算。%~1
是第一个参数,这里用于健壮性。明白。还有一个-exit/b0@MichałM-如果没有exit/b
或goto:eof
脚本将执行标签中的代码。虽然这里没有必要,因为您正在使用GOTO
,但是如果是CALL:label
,退出将是至关重要的。通常exit
比GOTO:eof
工作得快一点