批处理文件使用if语句

时间:2016-12-06 17:42:16

标签: batch-file

我有以下批处理文件。基本上它扫描一个导演,该导演具有相同名称但不同扩展名* .TXT和.AVI的成对文件。 如果存在与AVI文件名对应的文本文件名,则不播放AVI文件。否则它应该由指定的应用程序播放。 似乎环境变量是循环和if之间的问题。 我已阅读批处理文件中与环境变量有关的几乎所有相关帖子。他们都没有工作。我也尝试过使用和不使用EnableDelayedExpansion,但没有运气。也试过==而不是EQU,但没有运气。所有Echo语句都用于调试。 这是我的尝试。

@echo off

SetLocal EnableDelayedExpansion

SET  MyApp="C:\Program Files\VideoLAN\VLC\vlc.exe"
ECHO MyApp is %MyApp%

SET PathToDB=C:\1
ECHO PathToDB is %PathToDB%


FOR %%X in (%PathToDB%\*.avi) DO (

    ECHO  Q.  %%X  

    SET ABC=YES 

    IF EXIST "%PathToDB%\%%~nX.txt" (

        ECHO Coressponding Text File Exists ....[%%~nX.txt]....

        SET  ABC=[NO]
    )


    ECHO  1  %ABC%
    ECHO  1  !ABC!

    if !ABC! EQU "YES"    %MyApp%      %%X
    if !ABC! EQU "YES"    !MyApp!      %%X

)

感谢任何有用的建议

1 个答案:

答案 0 :(得分:2)

您应该仅将EQU用于数字比较。因为您要比较文字,所以应该使用==,但请记住:左侧的整个文字(每个字符)必须与右侧的整个文字相同 ==运算符。 IF语句if !ABC! == "YES" %MyApp% %%X中的条件永远不会计算为true,因为右侧部分包含双引号"而左侧部分不包含。所以它应该是:

if "!ABC!" == "YES"    %MyApp% %%X