Batch file 批处理如果存在多个文件(如果只有一个文件不存在怎么办)

Batch file 批处理如果存在多个文件(如果只有一个文件不存在怎么办),batch-file,if-statement,Batch File,If Statement,我现在用这句话: 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 这几乎完

我现在用这句话:

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
这几乎完美,只遗漏了一件事, 如果两个目录都存在,我不会写入日志行。。。 因此,只有当: 1%SystemDrive%\Arkey5存在 2D:\arkey5存在 3否则两人都失踪了

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仅与目录匹配


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

能否将其分成两行?有可能有两条记录线吗?你能说明你想要实现什么吗?事情可以分开,没有问题。。。目的=检查systemdrive C:和/或D:驱动器上是否存在Arkey5目录,如果存在,请创建找到该目录的日志行,其中C:和/或D:。现在它几乎完美了,唯一的缺陷是如果Arkey目录在两个驱动器上都存在,它不会创建日志行。你能把它分成两行吗?有可能有两条记录线吗?你能说明你想要实现什么吗?事情可以分开,没有问题。。。目的=检查systemdrive C:和/或D:驱动器上是否存在Arkey5目录,如果存在,请创建找到该目录的日志行,其中C:和/或D:。现在,它几乎完美了,唯一的缺陷是,如果Arkey目录同时存在于两者上,它就不会创建日志行drives@dbenhan:如果两者都不存在,则此日志只写入日志线;如果其中一个或两个都存在,则不写入日志线…@APOC-no,它在两个位置写入日志:在找到的目录的循环内,如果没有找到,就在循环之外。@APOC这对我来说很有效。如果两个都没有找到,我在日志中什么也没找到。如果找到任何一个,我会在日志文件中找到文件夹的名称。如果两者都找到了,我在日志文件中得到了这两个文件夹名。糟糕,我在共享网络地图上运行了脚本,权限不足,我更改了1个log.txt重定向,但我忘记更改另一个…愚蠢。。。它就像一个符咒,非常感谢。@dbenhan:这个只在两个都不存在的情况下写日志线,如果一个或两个都存在,则不会写日志线…@APOC-不,它在两个位置写入日志:在循环内找到目录,在循环外找不到目录。@APOC这对我很有效。如果两个都没有找到,我在日志中什么也没找到。如果找到任何一个,我会在日志文件中找到文件夹的名称。如果两者都找到了,我在日志文件中得到了这两个文件夹名。糟糕,我在共享网络地图上运行了脚本,权限不足,我更改了1个log.txt重定向,但我忘记更改另一个…愚蠢。。。它很有魅力,非常感谢。