删除所有文件夹中的 $recycle.bin 文件夹

delete $recycle.bin folder in all folders

这里需要一点帮助...

需要脚本最好是批处理脚本来删除所有子文件夹中的 $recycle.bin 文件夹。

我有云端硬盘,其中有用户文件夹,每个用户文件夹都有自己的 $recycle.bin 文件夹。

Structure on Drive C:\
User1 > $recycle.bin
User2 > $recycle.bin
User3 > $recycle.bin

当用户删除其个人资料中的内容时,它会发送到 c:\user1\$recycle.bin。 目前我分别进入每个文件夹删除 $recycle.bin.

使用这个或多或少的单行批处理文件,文件夹路径 C:\ 被真正的父文件夹路径替换:

@echo off
for /F %%D in ('dir "C:$recycle.bin" /AD /B /S 2^>nul') do rd /Q /S "%%D" 2>nul

上面的命令行在 C: 的 all 目录中递归搜索文件夹 $recycle.bin 并删除每个找到的 $recycle.bin.

还有第二种解决方案更快,因为首先仅在驱动器 C:(用户文件夹)的根目录中搜索非隐藏文件夹,然后在每个找到的(用户)文件夹中搜索文件夹 $recycle.bin 如果在用户文件夹中确实找到了这样的子文件夹,则将其删除。

@echo off
for /D %%U in ("C:\*") do (
    for /F %%D in ('dir "%%U$recycle.bin*" /AD /B 2^>nul') do rd /Q /S "%%U\%%D" 2>nul
)

第三种解决方案是使用第二种解决方案而不在用户文件夹中搜索 $recycle.bin 而是简单地假设存在这样的文件夹并将其删除。如果驱动器 C: 根目录的子文件夹没有文件夹 $recycle.bin,则命令 RD 会输出一条错误消息,但该错误消息会被抑制,如下所述。

@echo off
for /D %%D in ("C:\*") do rd /Q /S "%%D$recycle.bin" 2>nul

要了解使用的命令及其工作原理,请打开命令提示符 window,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。

  • dir /?
  • echo /?
  • for /?
  • rd /?

另请参阅 Microsoft 文章 Using command redirection operators 了解 2>nul 的解释。

命令 DIR 输出到 STDERR 的错误消息在找不到名称为 $recycle.bin 的任何文件夹时被重定向抑制使用 2>nul 向设备 NUL 发送错误消息。重定向运算符 > 必须使用 ^ 进行转义以应用于命令 DIR 的执行,而不是被解释为命令 FOR[ 的重定向=60=] 在无效位置指定,这将导致由于语法错误而退出命令处理。

2>nul 也用于命令 RD 以抑制用户当前正在使用的任何文件夹或文件夹内文件的错误消息输出,因此删除文件夹失败。在第三种解决方案中,如果根本没有文件夹 $recycle.bin,它也会抑制错误消息。