代码之家  ›  专栏  ›  技术社区  ›  Jérôme

批处理:检查参数数量

  •  17
  • Jérôme  · 技术社区  · 15 年前

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

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

    3 回复  |  直到 7 年前
        1
  •  24
  •   Joey    11 年前

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

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

    但是更具体地说,没有直接的方法来获取传递给批处理的参数的数量,除了 shift 数着它们。因此,如果您想确保传递的参数不超过19个,那么您需要完全做到这一点。但是,如果预期参数的数量低于9,那么上述方法就可以很好地工作。

        2
  •  5
  •   mjv    15 年前
    IF NOT "%3"=="" GOTO Too_Many_Args
    
        3
  •  1
  •   Meow    9 年前

    下面是我收集和分析参数列表并传递给外部命令的小示例:

    @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