【发布时间】:2017-04-21 11:01:01
【问题描述】:
我有以下批处理文件。基本上,它会扫描具有相同名称但扩展名不同 *.TXT 和 .AVI 的文件的导向器。 如果AVI文件名对应的Text文件名存在,则不播放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
)
感谢任何有用的建议
【问题讨论】:
-
你是说问题出在最后一个 if 语句吗??
-
尽管变量 ABC 的值为 YES,但代码中的最后两个 if 语句似乎未正确评估
-
此评论应与已经提供的答案一起阅读。如果您查看您的行,它显示为
SET ABC=YES,如果我将其放在引号中,则显示为SET "ABC=YES "。现在您应该可以看到您的问题了。 -
帮助阅读您尝试使用的命令的帮助文件。
标签: batch-file