Windows Batch Files: if else

前端 未结 6 832
执笔经年
执笔经年 2020-12-24 00:42

I\'m doing a simple batch file that requires one argument (you can provide more, but I ignore them).

For testing, this is what I have so far.

if not          


        
相关标签:
6条回答
  • 2020-12-24 00:54

    Another related tip is to use "%~1" instead of "%1". Type "CALL /?" at the command line in Windows to get more details.

    0 讨论(0)
  • 2020-12-24 00:56
    if not %1 == "" (
    

    must be

    if not "%1" == "" (
    

    If an argument isn't given, it's completely empty, not even "" (which represents an empty string in most programming languages). So we use the surrounding quotes to detect an empty argument.

    0 讨论(0)
  • 2020-12-24 00:57

    An alternative would be to set a variable, and check whether it is defined:

    SET ARG=%1
    IF DEFINED ARG (echo "It is defined: %1") ELSE (echo "%%1 is not defined")
    

    Unfortunately, using %1 directly with DEFINED doesn't work.

    0 讨论(0)
  • 2020-12-24 00:58

    you have to do like this...

    if not "A%1" == "A"

    if the input argument %1 is null, your code will have problem.

    0 讨论(0)
  • 2020-12-24 01:09

    You have to do the following:

    if "%1" == "" (
        echo The variable is empty
    ) ELSE (
        echo The variable contains %1
    )
    
    0 讨论(0)
  • 2020-12-24 01:12

    Surround your %1 with something.

    Eg:

    if not "%1" == ""
    

    Another one I've seen fairly often:

    if not {%1} == {}
    

    And so on...

    The problem, as you can likely guess, is that the %1 is literally replaced with emptiness. It is not 'an empty string' it is actually a blank spot in your source file at that point.

    Then after the replacement, the interpreter tries to parse the if statement and gets confused.

    0 讨论(0)
提交回复
热议问题