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
else
和 if
是不同的关键字。在它们之间放一个 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
则不需要 if
和 else
。
@echo off
if "%~1" == "my-test1" python.exe "mypath\my_test1.py"
if "%~1" == "my-test2" python.exe "mypath\my_test2.py"
我有一个 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
else
和 if
是不同的关键字。在它们之间放一个 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
则不需要 if
和 else
。
@echo off
if "%~1" == "my-test1" python.exe "mypath\my_test1.py"
if "%~1" == "my-test2" python.exe "mypath\my_test2.py"