检查批处理文件中的参数



我正在尝试制作一个在参数方面表现得几乎像Linux命令的批处理脚本。这是剧本的构思。

当我使用代码中描述的场景运行脚本时,它似乎工作得很好。当我试图用错误的参数测试程序时,我遇到了问题。对于第一个参数是-手动-automat,而第二个参数是错误的,则行为正常,程序打印";无效参数"。

我遇到的问题是,当第一个参数不是-manual-automat时。在这种情况下,我得到了一个错误:goto在这个时候是出乎意料的

有人知道为什么会发生这种情况吗?我该如何解决这个问题?

@echo off
IF %1!==! goto Result0
IF %1==-manual IF %2!==! goto Result1_manual
IF %1==-automat IF %2!==! goto Result1_auto
IF %1==-manual IF %2==1 goto Result2_manual
IF %1==-manual IF %2==2 goto Result3_manual
IF %1==-automat IF %2==1 goto Result2_auto
IF %1==-automat IF %2==2 goto Result3_auto
:done
echo "Invalid argument"
pause
cmd /k
:Result0
echo "Result0"
pause
cmd /k
:Result1_manual
echo "Result1_manual"
pause
cmd /k
:Result2_manual
echo "Result2_manual"
pause
cmd /k
:Result3_manual
echo "Result3_manual"
pause
cmd /k
:Result1_auto
echo "Result1_auto"
pause
cmd /k
:Result2_auto
echo "Result2_auto"
pause
cmd /k
:Result3_auto
echo "Result3_auto"
pause
cmd /k
If "%1"=="-manual" goto Result1_manual

If参数可能丢失,请用另一个字符括起来。如果%1为空白,而您没有

If ==-manual goto Result1_manual

非法语法,如果你做

If ""=="-manual" goto Result1_manual

解析为false的合法语法。

IF %2!==!

只有当CCD_ 2为空时才为真。如果这是你的意图,不要使用引号字符。它有时有特殊的意义。

最新更新