【问题标题】:Batch : Checking the number of parameters批处理:检查参数数量
【发布时间】:2010-12-02 15:35:31
【问题描述】:

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

有没有简单的方法来检查,还是我必须根据需要多次调用 SHIFT 直到参数值为空?

【问题讨论】:

标签: batch-file


【解决方案1】:

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

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

但更具体地说,除了shifting 并计算它们之外,没有直接的方法可以获取传递给批处理的参数数量。因此,如果您想确保传递的参数不超过 19 个,那么您就需要这样做。但如果预期参数的数量低于 9,则上述方法效果很好。

【讨论】:

  • 傻我,没想到这么简单的方法!谢谢!
  • 这个带有 [方括号] 的技巧使批处理的怪癖看起来和感觉与 bash 的怪癖一致
  • 最好使用引号而不是方括号,但我建议使用"%~3" 以避免参数周围出现引号问题
【解决方案2】:
IF NOT "%3"=="" GOTO Too_Many_Args

【讨论】:

    【解决方案3】:

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

    @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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 2011-08-09
      • 2016-03-08
      • 2010-11-20
      • 1970-01-01
      • 2020-03-01
      相关资源
      最近更新 更多