我有以下批处理文件。基本上它扫描一个导演,该导演具有相同名称但不同扩展名* .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
)
感谢任何有用的建议
答案 0 :(得分:2)
您应该仅将EQU
用于数字比较。因为您要比较文字,所以应该使用==
,但请记住:左侧的整个文字(每个字符)必须与右侧的整个文字相同 ==
运算符。 IF语句if !ABC! == "YES" %MyApp% %%X
中的条件永远不会计算为true,因为右侧部分包含双引号"
而左侧部分不包含。所以它应该是:
if "!ABC!" == "YES" %MyApp% %%X