批处理:检查参数数量

时间:2009-09-30 13:06:36

标签: batch-file

我想确保在调用我的批处理时,传递的参数不超过2个。

是否有一种简单的方法可以检查,或者我必须根据需要多次调用SHIFT,直到参数值为空?

3 个答案:

答案 0 :(得分:24)

您可以简单地测试是否存在第三个参数,如果存在则取消:

if not "%~3"=="" (
    echo No more than two arguments, please
    goto :eof
)

但更具体地说,没有直接的方法可以将传递给批处理的参数数量减去shift并计算它们。因此,如果您想确保传递的参数不超过19个,那么您需要做到这一点。但是,如果预期参数的数量低于9,则方法效果很好。

答案 1 :(得分:5)

IF NOT "%3"=="" GOTO Too_Many_Args

答案 2 :(得分:1)

这是我收集和解析参数列表并传递给外部命令的小例子:

@echo off
setlocal enabledelayedexpansion

if %1. EQU . (
    echo %~0 [-t NUM] FILE [FILE...]
    goto end
)

:args_loop
if "%~1" EQU "-t" (
    set arg_t=%1
    set arg_t_val=%2
    shift
) else (
    set files=!files! %1
)
shift
if %1. NEQ . goto args_loop

:args_loop_end

x:\path\to\external.exe %arg_t% %arg_t_val% %files%

:end