【问题标题】:Windows delete many fileswindows删除很多文件
【发布时间】:2019-10-17 08:38:52
【问题描述】:

我正在尝试删除具有随机扩展名的许多子文件夹中的许多文件,我该怎么做? 我有很多加密文件(勒索软件),现在我解密了所有文件,每个文件都有一个副本(30.000 个文件)。

所有加密文件都有一个 6 个字符的随机扩展名 比如“namefile.pdf.123456”/“namefile.docx.ujyrtf”

你能帮我写一个删除所有这些文件的脚本吗?

存储在文件夹和子文件夹中

也许我可以尝试使用多文件重命名器将 .jpg. 重命名为 *.jpg.del,然后通过 cmd 删除所有 *.del,我不知道我是否可以这样做这个。

我尝试像这样使用 CMD,然后输入:

del *.jpg.*

但是这个命令删除了所有.jpg和所有.jpg.*

谢谢

注意:这些文件夹中没有任何合法文件。它是一个文件夹数据,有 mkv、jpg、doc、xls 等。Documents、Video、Audio。不是应用程序或 Windows 文件夹或类似的东西。不要在系统分区、程序文件夹上使用此 SCRIPT,因为可能会有合法文件被删除。谢谢杰拉德

【问题讨论】:

  • “帮助”一词意味着您自己做了一些努力,所以请edit您的问题并发布minimal reproducible example您的编码尝试!也可以参加tour,访问help center,了解How to Ask
  • 你说得对 aschipfl ,对不起,我用 cmd 尝试编辑问题。
  • 命令行dir /B /A:-D "*.*.*" | findstr /I "\...*\.[^\.][^\.][^\.][^\.][^\.][^\.]$"应该返回你要删除的文件;使用for /F loop 捕获其输出并处理文件,因此使用del 删除它们...
  • FWIW,这种行为是意料之中的:“[一些 MS-DOS 怪癖] ... 因为它们已经成为惯用语,所以会一直存在于 Win32 中。例如,如果您的模式以 .* 结尾,则 .* 是忽略。”source。您可以使用 PowerShell,它会按您的预期解析此类模式。

标签: batch-file cmd


【解决方案1】:

如果所有文件都有 6 位扩展名,那么我们可以使用 findstr regex 删除它们。

来自cmd

@for /f "delims=" %i in ('dir /b /a-d *.????.* ^| findstr /r "\.[^\.][^\.][^\.][^\.][^\.][^\.]$"') do @echo del "%i"

或在批处理文件中:

@echo off
cd /d "C:\Path to files\to delete\"
for /f %%i "delims=" in ('dir /b /a-d *.????.* ^| findstr /r "\.[^\.][^\.][^\.][^\.][^\.][^\.]$"') do echo del "%%i"

这只会回显结果,您只需在确认它不会删除不想要的文件后删除echo

【讨论】:

  • 注意!误报!! (具有多个扩展名的文件,例如 *.x1.xls)(另外:有 6 个字符扩展名的合法文件 - 并非所有文件都与勒索有关,有些可能至关重要)
  • @Stephan。谢谢。我仅基于 OP 的评论 “所有加密文件都有一个带有 6 个字符的随机扩展名”,但将包含扩展名选项,如 *.x1.xls
  • @Stephan 更新以排除具有*.x1.xls 可能性的文件
  • @9overvlow。仍然有很多带有 6 字符扩展名的文件,它们是误报,可能对您的应用程序甚至 Windows 至关重要。删除时要格外小心。 (抱歉,您的问题没有简单的解决方案)
  • 只需在dir /b之后添加/s
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-21
  • 1970-01-01
  • 2021-07-26
  • 2014-05-10
  • 1970-01-01
相关资源
最近更新 更多