windows 批处理文件中的 elseif else

If elseif else in windows batch file

我有一个 bat 脚本,我需要为其提供一个参数。如果该参数等于“my-test1”,它将执行一个脚本。如果该参数等于“my-test2”,它将执行另一个。如果参数不存在于if/elseif、return代码1.

我怎样才能做到这一点?请在下面找到我到目前为止所做的尝试。

   if "%~1" == "my-test1" (
            python.exe mypath\my_test1.py
            )
    elseif "%~1" == "my-test2" (
            python.exe mypath\my_test2.py
            )
    else
        EXIT WITH AN EXECUTION CODE 1

elseif 是不同的关键字。在它们之间放一个 space 。 EXIT WITH AN EXECUTION CODE 1 应该是 exit /b 1

AND else 必须与 ) 关闭真正的条件处理

在同一物理线路上

AND else 必须后跟 一些命令 ( 和下一行的命令

 if "%~1" == "my-test1" (
            python.exe mypath\my_test1.py
            ) else if "%~1" == "my-test2" (
            python.exe mypath\my_test2.py
            ) else EXIT /b 1

使用if /i 进行case-insensitive匹配

如果您的脚本真正以数字命名,您可以使用 choice:

@echo off
echo %1|choice /c 12 /m "my-test1 mytest-2"
python.exe "mypath\my_test%errorlevel%.py"

如果您 运行 文件原样 filename.cmd 或者它可以与参数一起使用,这将提示用户 filename.cmd 1

但是如果您想保留当前格式以使用特定输入,例如 filename.cmd my-test1 则不需要 ifelse

@echo off
if "%~1" == "my-test1" python.exe "mypath\my_test1.py"
if "%~1" == "my-test2" python.exe "mypath\my_test2.py"