删除所有不符合特定模式的文件-Windows命令行


12

通过命令行删除项目非常容易。

del /options filename.extension

现在,假设我要删除文件夹中所有不以.jpg结尾的文件,我该怎么做。

问题是,我有一个软件可以将所有指定的图像转换为.jpg,但是可以保留原始图像,而我不再需要这些原始图像。

与对每个不同的文件类型执行多个语句相比,执行单个语句将更有效率。

Answers:


14

我会这样做:

attrib +r *.jpg
del /q *
attrib -r *.jpg

这将首先使所有JPG文件变为只读状态,删除所有其他内容(它会自动跳过只读文件),然后使JPG文件再次可写。


像冠军一样工作。注意:只需添加/s到每一行以递归地将文件包含在子目录中。
Chuck Wilbur

9

这实际上很容易。

您需要for遍历文件,然后简单地寻找扩展名:

for %f in (*) do if not %~xf==.jpg del "%f"

应该可以解决问题(在此处代码)。


谢谢,但这仅取决于我使用的地图。
KdgDev

4
地图?
乔伊(Joey)

如果不是.jpg,不是.jsp和.xml而不是del,我怎么说?
user1164061 2017年

1

PowerShell来营救
在Windows 7/8的时候,它好老命令行的继任者

Del C:\myFolder\* -exclude '*.jpg'

Del是的别名Remove-Item。它具有多个选项,例如递归,包含,排除和过滤(将其用于RegEx)

您必须添加\*以将文件包含在给定的文件夹中


在CMD提示符下,这应该起作用:PowerShell.exe -Command "&{Remove-Item C:\MyFolder\* -Exclude '*.jpg'}"
Iszi 2014年

注意:PowerShell随附Win 7/8。对于Windows XP或Vista,您需要下载并安装它。
Iszi 2014年

1

我知道这不是直接回答您的问题,但是您是否查看了转换器上的选项以查看是否:

  1. 它可以删除原稿本身

要么

  1. 将.jpg写入新文件夹?

我没有直接的选择。如果开始是JPG,它将覆盖原始文件。但是,其他所有文件在创建它们的JPG时仍保留在磁盘上。
KdgDev

@WebDevHobo-哦,那我去接受约翰尼斯的建议。
2009年

0

我正在寻找一种方法来查找Windows 7(NTFS卷)上的目录树中所有不具有扩展名“ .mp3”的文件,其中可能包含20,000个文件,位于各个深度的数百个目录中...焦虑,我用过:

cd <theplace>
dir /S | find /V "<DIR>" | find /V "Total" | find /V "bytes" | find /V "Directory" | find /V "Volume" | find /V ".mp3" | more /S

列出与DIR命令输出相关的所有内容后,该文件列出了与.mp3不匹配的文件... 99%可以工作...除非不匹配的文件被命名为标准DIR输出中的关键字之一-也许有一种方法可以使DIR报告中的标头/摘要信息更少-但我丝毫没有打扰,因为这可以解决大部分问题。


显然,此处的发布代码去除了一些特殊字符...因此,上面的“ cd”命令本身位于一行上,并指定了目标根目录,并且第一个“ find”命令删除了所有包含“ <” DIR“>的行“(如图),因为这是dir命令的输出-但此处的邮政编码可能认为这是某种元指令并将其剥离...
CaptPat 2012年

1
有一种更简单的方法可以执行此操作:命令/b标志dirdir /bdir /s /b列出当前目录中的文件名和扩展名,列出当前目录和所有子目录中所有文件的标准名称。我必须记住,使用管道find /v代替for循环是一个不错的选择,但我认为它不能与配合使用del
Bob

0

删除与文件名匹配的所有文件的另一种方法如下所示。for循环列表中的所有文件,if列表中的if NOT匹配(不带目录名)。

for /r %f in (*) do if not %~nxf == abc.xml del "%f"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.