在批处理中,如何列出特定目录的文件?

时间:2017-02-09 19:07:34

标签: batch-file

我需要浏览除了一个(名为“FORBIDDEN”)之外的所有目录,并为每个目录打印它们包含的所有文件。

所以我写了一个像这样的批处理脚本:

@echo off
for /f "tokens=*" %%G in ('dir /b /s /a:d %cd%') do ^
if %%G NEQ C:\Users\ME\FORBIDDEN (dir /a-d %%G)

但是部分(dir /a-d %%G)并不好,因为我收到一些错误,说找不到文件。

那么,对于循环的每一轮,如何列出目录中存在的所有文件(其路径在%%G中)?

干杯

1 个答案:

答案 0 :(得分:1)

for /d /r %%d in (*) do if not "%%~nxd"=="FORBIDDEN" 2>nul dir /a-d "%%d"

如果每个文件夹不是排除的文件夹,请显示其内容

已修改以适应评论

仅包含具有完整路径的文件

for /d /r %%d in (*) do if not "%%~nxd"=="FORBIDDEN" (
    for %%f in ("%%~fd") do echo "%%~ff"
)

另一个选项(也包括当前文件夹中的文件)可以是

dir /a-d /s /b | find /v "\FORBIDDEN\"

获取完整列表并对其进行过滤,以仅检索不引用已排除文件夹的行