我想对批处理文件做简单的检查。 argCount
包含正确的数字,但我在比较变量和数字时遇到了麻烦。如果参数的数量不等于3并且转到文件的末尾,我想显示帮助。
我想:
if not %argCount% == 3
if not %argCount%=='3'
if not '%argCount%'=='3'
if %argCount% NEQ 3
但按预期工作没有这些选项...大多数的选项,我试着总是告诉我帮助的消息无论参数的数量,一些如果我将3个参数传递给脚本(非常奇怪),则选项会显示帮助消息,而不会显示前3行。检查批处理文件参数的数量
@echo off
set argCount=0
for %%x in (%*) do (
set /A argCount+=1
)
if not %argCount% == 3 (
echo This script requires the next parameters:
echo - absolute path to file
echo - filter (explanation)
echo - true or false (explanation)
echo Examples:
echo start.bat full\path\to\the\file.ext test true
echo start.bat full\path\to\the\file.ext nof false
goto end
)
REM some another code
:end
你的')回波'被视为'if'块的末尾。使用括号内的插入符号将所有')'全部转义出来。另外,除非你有明确的理由,否则[总是使用'setlocal'](https://stackoverflow.com/a/15659309/1683264);如果你使用'goto:EOF'或者'exit/b',你可以在脚本结尾去掉':end'标签。 – rojo
@rocknow将批处理文件'start.bat'命名为覆盖Windows命令解释器的内置命令__START__是一个非常糟糕的主意。所以强烈建议给该批处理文件一个不同于'start.bat'的名称。 – Mofi