仅检查特定子目录中的文件

时间:2017-02-17 18:49:38

标签: batch-file

在试图找到检查目录中文件的方法时,我发现了这个:

>nul 2>nul dir /a-d /s "folderName\*" && (echo Files exist) || (echo No files found)

它运行良好,除了我真的需要能够只检查遵循特定命名约定的一半子目录。

enter image description here

无论如何要重新修改这一行只能检查" ToBeMoved"文件夹?

我试着这样写:

>nul 2>nul dir /a-d/b/s "\\SERVER\Path\*ToBeMoved" && (echo Files exist) || (echo No files found)

但它不起作用。我猜测是因为它在用户级别使用字符串" ToBeMoved"来查找文件夹。

2 个答案:

答案 0 :(得分:1)

试一试。使用PUSHD命令更改您需要的根路径。

>

为我输出。

|

编辑: 只是为了告诉你我在一个名为 ToBeMoved 的文件夹中有一个文件,我从提示符下运行了dir cmd。我只放了一个文件进行测试。

!

答案 1 :(得分:1)

我相信您列出的第一个代码缺少/b选项。假设它实际存在,那么原始代码列出了目录层次结构中每个文件的完整路径,但是您将输出定向为null,并根据是否找到文件有条件地采取操作。

您可以直接管道到FIND,而不是重定向到null,从逻辑上查找包含*ToBeMoved\的路径。该输出可以重定向到null,您可以根据FIND返回代码有条件地执行操作。我会在寻找字符串时忽略大小写。

dir /b /a-d /s "folderName" 2>nul|find /i "ToBeMoved\" >nul && (echo Files exist) || (echo No files found)

您可以使用FINDSTR代替,但必须转义反斜杠

dir /b /a-d /s "folderName" 2>nul|findstr /i "ToBeMoved\\" >nul && (echo Files exist) || (echo No files found)