【发布时间】:2014-08-01 21:09:32
【问题描述】:
根据文件名移动各种文件的工作脚本成功运行。脚本完成后,它将使用IF EXIST *.txt 检查两个目录中是否存在任何延迟文件。这很好用,除了我注意到一些没有扩展名的文件。以前这些都不是问题,由于我无法控制的过程,这无法解决,我需要修改我的脚本。
我唯一的想法是下面的代码。忍耐,因为有两个条件:
:check1
PUSHD "\\UNC\path1" &&(
DIR /A-D *.
IF %errorlevel% NEQ 0 GOTO check2
) & POPD
:add1
ECHO Add note to the log file
:check2
PUSHD "\\UNC\path2" &&(
DIR /A-D *.
IF %errorlevel% NEQ 0 GOTO laststep
) & POPD
:add2
ECHO Add note to the log file
:laststep
Some other code before exiting
这应该在路径上运行DIR,如果存在没有扩展名的文件,它将%errorlevel% 为零并继续进行下一个检查。如果存在 no 文件,则它的 %errorlevel% 不为零(可能为 1),并且它会在下次检查之前将一些文本附加到日志中。检查两个会做同样的事情。
这似乎非常复杂,我找不到像IF EXIST 这样简单的“单线”解决方案。我意识到我可以使用*.,但这也会返回目录,并可能导致错误的%errorlevel%。
更新代码
在我通常设置变量的地方,我还 SET 运行 DIR 的两条路径。通过这种方式,它们可以更容易地在其他地方使用并且我绕过了我通常遇到的 UNC 路径错误 - 我不知道原因。更新后的文件检查,仅用于没有扩展名的文件,是:
DIR %p1% /b /a-d|FIND /v "." && ECHO Found 1 >> %log%
DIR %p2% /b /a-d|FIND /v "." && ECHO Found 2 >> %log%
FINDSTR /I "Found" %log%
IF %errorlevel% EQU 0 GOTO stillthere
:nofiles
Some code
GOTO domore
:stillthere
Some code
:domore
Other code before exit
感谢您的回复,我从中学到了。
【问题讨论】:
标签: batch-file if-statement for-loop dir