批量比较两个字符串

时间:2014-08-10 04:35:22

标签: batch-file batch-processing

目前我正在编写一个批处理文件来接受参数并根据参数值跳转到文件的特定部分。我的代码如下:

SET param = %~n1

IF "%param%"=="q" GOTO :QUICK
IF "%param%"=="t" GOTO :THOROUGH
IF "%param%"=="b" GOTO :BOOT
IF "%param%"=="f" GOTO :FIX
IF "%param%"=="" GOTO :INVALID


:QUICK
echo "Quick"
pause
exit

:INVALID
echo "Invalid"
pause
exit

:BOOT
echo "Boot"
pause
exit

:FIX
echo "Fix"
pause
exit

:THOROUGH
echo "Thorough"
pause
exit

脚本应该接受的唯一参数是/q, /t, /b or /f(或没有/),并且当提供的参数不正确时,它应该跳转到INVALID。当我使用无效参数运行它时,它可以工作,但是,如果我提供一个正确的参数(例如,file.bat t),结果将无法正常工作,并最终直接进入{{1 }}。我已经尝试使用INVALID,并在进行比较之前将"%param%" EQ "q"设置为变量,但我没有运气想出一个有效的结果。

1 个答案:

答案 0 :(得分:3)

您没有参数%param%。但是你有一个名为%param<space>%的参数,它的值不是q,而是<space>q

不用空格编写set命令:

set param=%~n1

甚至更好(以避免最后的意外空间):

set "param=%~n1"

注意:您可以使用if /i "%param%"=="q"

使参数与案例无关