【问题标题】:CMD: How to check if one or more parameters are given [duplicate]CMD:如何检查是否给出了一个或多个参数[重复]
【发布时间】:2021-10-15 16:18:03
【问题描述】:

我需要检查用户是否给出了一个或两个参数。取决于此,将应用不同的功能。

在这种情况下我如何使用 OR 或 AND 之类的东西?

  @echo off
    :BEGIN
            echo START
    
            set /p var1=
            set /p var2=
    
            if %var1%=="" if %var2%=="" goto BEGIN
            if exist %var1% OR %var2% goto ONE
            if exist %var1% if exist %var2% goto TWO
    
    :ONE
            ECHO You give only one parameter
            <code here>
            goto EXIT
    
    :TWO
            ECHO You give two parameters
            <code here>
            goto EXIT
    
    
    :EXIT
    exit

谢谢!

【问题讨论】:

    标签: windows batch-file cmd


    【解决方案1】:

    Batch 根本没有逻辑运算符,但您几乎可以找到解决方案。

    在批处理中,字符串比较与其他语言有点不同。

    变量也必须用引号引起来。 if "%var1%"==""

    那么你的代码看起来像

    @echo off
    :BEGIN
    echo START
    
    set "var1="
    set "var2="
    set /p var1=
    set /p var2=
    
    if "%var1%"=="" if "%var2%"=="" goto BEGIN
    if "%var1%" NEQ "" if "%var2%" NEQ "" goto TWO
    goto :ONE
    
    :ONE
    ECHO You give only one parameter
    <code here>
    goto EXIT
    
    :TWO
    ECHO You give two parameters
    <code here>
    goto EXIT
    
    
    :EXIT
    exit
    

    除了使用字符串比较,您还可以使用IF DEFINED 语法

    if not defined var1 if not defined var2 goto begin
    if defined var1 if defined var2 goto TWO
    

    顺便说一句。我在set /p 之前添加了set "var1=" 以取消定义变量,因为set /p 对于空输入不会更改(或清空)变量。

    【讨论】:

    • 完美运行,非常感谢!
    • 您可以考虑在每个set \p 语句之后放置检查:然后您可以通过内部函数调用提供默认、重做或退出等选项。
    猜你喜欢
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    相关资源
    最近更新 更多