【问题标题】:Exclude certain subfolders when scanning the contents of a folder扫描文件夹内容时排除某些子文件夹
【发布时间】:2018-06-28 07:04:55
【问题描述】:

我有一个批处理文件,用于使用 for 循环扫描 Windows 7 机器上的 c:\ 文件夹(及其各自的子文件夹)。我在排除某些文件夹时遇到问题,例如用户、Windows、LocalAppData 等。

我需要扫描 C:\ 中的文件夹以查找特定命名文件夹(即“myFolder”),而不扫描上述文件夹,以增加检测 C: 文件夹中所需文件夹的时间。

代码:

@echo off

for /d /r "c:\" %%a in (*) do (
    findstr /v "Users" "Windows"
)

【问题讨论】:

  • 请出示您的代码并说明您到目前为止所做的尝试。
  • @Hexaholic 刚刚在上面添加了我的代码
  • 如果您知道文件夹的位置,其名称不会偶然出现在您的代码中的任何位置,也许您可​​以告诉我们它可能在哪里,\Program Files* 也许?你的问题看起来有点混乱,因为LocalAppData 已经在Users 中,所以应该被FindStr 排除在外,注意你的代码中明显的错字!
  • 我正在搜索的文件夹可以在 C 盘内的任何文件夹中,但不能在 Program Files 或 Users 中。即使错字已修复,它仍然不起作用。 @Compo
  • 下定决心!你说UsersWindowsLocalAppData,然后你的代码说UsersWindows,现在你说UsersProgram Files。在标准的 Windows 安装结构中,系统目录除外($Recycle.BinRecoverySystem Volume Information),通常有以下目录:PerfLogsProgram FilesProgram Files (x86)ProgramDataUsersWindows。您已经排除了这六个中的四个;你能更好地解释你的任务吗?

标签: batch-file directory subdirectory findstr


【解决方案1】:

使用dir command返回所有想要的目录myFolder的路径,通过findstr command过滤它们,然后通过for /F loop捕获结果,如下所示:

for /F "delims=" %%D in ('dir /B /S /A:D "C:\myFolder" ^| findstr /I /V /C:"\\Users\\" /C:"\\Windows\\"') do echo/%%D

当然,您可以指定更多排除项。


如果您希望将异常保存在文本文件C:\exclude.txt

Users
Windows

像这样改变方法:

for /F "delims=" %%D in ('dir /B /S /A:D "C:\myFolder" ^| findstr /I /V /L /G:"C:\exclude.txt"') do echo/%%D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多