2012-02-10 69 views
1

我现在用的这条线:批量如果存在多个文件(如果只有一个不存在的)

IF EXIST "%SystemDrive%\Arkey5" (ECHO Found "%SystemDrive%\Arkey5" >> "LOG.txt" 2>&1) ELSE IF EXIST "D:\Arkey5" (ECHO Found "D:\Arkey5" >> "LOG.txt" 2>&1) ELSE ECHO NOTHING FOUND >> "LOG.txt" 2>&1 

这工作近乎完美,它只差这一件事情,如果 两个目录存在我不“T获得写入日志行... 因此,在这一刻,只有当: 01 “的%SystemDrive%\ arkey5” 存在 02 “d:\ arkey5” 存在 03. ELSE(双双失踪)

+0

你能把它分成两行吗?并可能有2个日志行? – MaskedPlant 2012-02-10 14:29:19

+0

你能澄清你想达到的目标吗? – aphoria 2012-02-10 14:58:12

+0

事情可以分开,没有问题... purpose =检查系统驱动器(C :)和/或D:驱动器上是否存在Arkey5 directoriy,如果是这样,创建一个日志行,找到它并在哪里(C:和/或D :)。现在它几乎完美了,现在唯一的缺点是它不会创建一个日志行,如果两个驱动器上都存在Arkey目录 – APOC 2012-02-10 15:09:05

回答

4
set found= 
for %%F in (
    "%SystemDrive%\Arkey5\" 
    "D:\Arkey5\" 
) do if exist %%F (echo Found %%F >>"log.txt" & set found=1) 
if not defined found echo NOTHING FOUND >>"log.txt" 

加入\到每个路径的结尾,以确保IF EXIST只匹配一个目录。

+0

@dbenhan:如果两个驱动器都不存在,这个只写入一个logline或者两者都存在,没有写行... – APOC 2012-02-10 16:20:12

+0

@APOC - 不,它在2个位置写入日志:在找到的目录的循环中,如果没有找到,则在循环之外。 – dbenham 2012-02-10 16:33:08

+0

@APOC这为我工作。如果都没有找到,我就在日志中找到了“没有找到”。如果找到任何一个,我就得到日志文件中文件夹的名称。如果两者都找到,我在日志文件中获得了两个文件夹名称。 – aphoria 2012-02-10 16:34:02