请在这里需要一点帮助...
需要一个脚本,最好是批处理脚本来删除所有子文件夹中$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: 的所有目录中递归搜索文件夹$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
要了解使用的命令及其工作原理,请打开命令提示符窗口,在那里执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
dir /?
echo /?
for /?
rd /?
另请参阅Microsoft文章使用命令重定向运算符,了解2>nul
的说明。
命令DIR输出到STDERR在找不到任何名称为$recycle.bin
的文件夹时,通过将错误消息重定向到带有2>nul
的设备NUL来抑制。重定向运算符>
必须使用^
进行转义,以便在执行命令DIR时应用,而不是解释为在无效位置指定的命令FOR的重定向,这将导致由于语法错误而退出命令处理。
2>nul
还用于命令RD,以禁止用户当前正在使用的任何文件夹或文件夹中的文件上的错误消息输出,因此删除文件夹失败。在第三种解决方案中,如果根本没有文件夹$recycle.bin
,它还会抑制错误消息。