如何在IF条件下引用Windows批处理文件的第一个参数?

如何在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

我是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:\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łM
if something==somethin
直接比较字符串。如果某些参数包含空格,则需要引号,但引号也将被计算。
%~1
是第一个参数,这里用于健壮性。明白。还有一个-exit/b0@MichałM-如果没有
exit/b
goto:eof
脚本将执行标签中的代码。虽然这里没有必要,因为您正在使用
GOTO
,但是如果是
CALL:label
,退出将是至关重要的。通常
exit
GOTO:eof
工作得快一点