批处理文件,删除“我的文档”中除数组之外的文件夹

批处理文件,删除“我的文档”中除数组之外的文件夹

我实在受够了 Windows 中随机的垃圾文件夹(Cyber​​Power、VirtualBox 等)被倾倒到我的文档文件夹中。为了澄清起见,我使用的是 Windows 7。不,它不是“用户文件”,而是我的文档,我也不会把 Xbox 3 称为错误的号码。现在我们已经澄清了,我想找出一种方法来制作一个小型批处理程序,它可以清除未知的垃圾文件夹,然后我会把它放在我主动允许程序在启动时运行的一个地方:所有用户文件夹中的启动文件夹。

如果数组(或一般情况)不能通过批处理完成,那么使用哪种好的平台中立语言来解决这个问题?

答案1

首先,请注意。不完整的白名单可能会导致重要文件被删除。此外,这些“垃圾文件夹”通常是创建它们的软件正常运行所必需的。如果您仍然选择此解决方案,这里有一行代码,为了便于阅读,带有换行符:

pushd C:\Users\John\Documents && 
  for /D %i in (*) do @(
    echo %i| findstr /V /I /R /C:"^Important$" /C:"^Keep me$" > NUL &&
    echo rmdir /S /Q %i
  ) & popd

在其当前形式下,此语句不会造成任何有害影响。第二个 echo 显示而不是执行“rmdir”命令,并作为预防措施。检查脚本是否按预期工作,然后删除第二个出现的“echo”。

简要说明。pushd临时将目录更改为文档文件夹。for /D列出其中的所有目录。对于每个目录,findstr将其名称与白名单进行匹配。开关/V /I /R仅打印不匹配的条目,使搜索不区分大小写并启用正则表达式。每个要保留的目录然后列为/C:"^dirname$"。不在白名单上的目录将findstr返回错误级别零,从而执行双 & 符号后的命令,即rmdir /S /Q %i删除该目录(无论是否为空),而无需确认。

如果从批处理文件运行而不是直接从命令行运行,请将每个替换%i%%i

相关内容