如何使用Windows中的文件名列表从文件夹中删除文件?


23

我有一个包含2K +文件的文件夹,我需要删除200左右,我有一个txt文件,其中所有需要删除的文件名都按列表顺序排列,如何使用列表从文件夹中删除特定文件?(操作系统是Windows 7)

Answers:


18

简单的方法是将txt文件mydel.bat复制到要删除的文件目录中的文件。使用Microsoft Word等编辑器编辑此文件。通常^p在Word中对换行符进行全局替换。替换为space/f^pdelspace。这将改变

File1.bin
File20.bin
File21.bin

到(/f用于“强制删除只读文件”):

File1.bin /f
del File20.bin /f
del File21.bin /f
del

编辑第一行以添加del空格并删除最后一行。

运行批处理命令。


除了/ Y开关(显然在win7 del命令中不起作用)之外,它的效果还不错..谢谢
Avishking 2011年

2
这可能是/f因为“强制删除只读文件”而不是/y
afrazier 2011年

正确的疯狂。我将与XCOPY和一个或两个其他DOS程序一起使用的/ Y混合在一起,以“禁止提示确认操作”
kingchris

在知道如何使用正则表达式查找/替换的编辑器(例如Notepad ++)中,您需要将“ ^”替换为“ del”,将“ $”替换为“ / f”,其中^代表每行的开头,而$-结束。
Dan Mirescu

38

在命令行上键入此内容,将您的文件替换为files_to_delete.txt

for /f %i in (files_to_delete.txt) do del %i

适用于包含在.cmd文件中的版本(双%%),并且能够处理文件名中的空格:

for /f "delims=" %%f in (files_to_delete.txt) do del "%%f"

1
这实际上删除了文件列表,而不是文件本身……我不得不再次创建列表:|
阿维希金

4
我最深的歉意。我忘记了/f国旗。
威廉·杰克逊

那真是太漂亮了,我不知道命令行支持这样的循环。是否愿意为SU博客撰写有关此复杂性和命令行其他复杂性的博客文章?
Ivo Flipse

1
@Ivo:您可能想看看computerhope.com/batch.htmsuperuser.com/questions/tagged/batch以了解更多信息。像Unix一样,脚本(批处理文件)中可以完成的大部分操作也可以直接从命令行完成。
BlueRaja-Danny Pflughoeft

我创建了一个bat文件并复制了第二个示例:结果:仍然删除了files_to_delete.txt。(即使带有/ f标志)
bvdb

18

使用PowerShell:

Get-Content c:\path\to\list.txt | Remove-Item

1
哇,这比批处理更具可读性。
TheLQ 2011年

为了将来的读者... >为了使这项工作,我不得不将管道操作员更改为a 。即Get-Content c:\path\to\list.txt > Remove-Item... ...我的电脑中有完整的UNC路径list.txt。希望这可以帮助。
NateJ

@NateJ我尝试使用>,它只是为我创建了一个文件,而不是删除东西。
布赖恩J

@BrianJ嗯,我得回头看看我做了什么。
NateJ

1

我想可以用powershell做到。

了解Perl之后,我倾向于将其用于此类操作

perl -l -n -e "unlink" filenames.txt

1

经过一些更改后,第一种方法可以工作:

  1. 打开记事本
  2. 复制所有带有扩展名的文件名,这些文件名需要del在开头添加后删除,例如

    del File1.bin
    del File20.bin
    del File21.bin
    
  3. 将文件另存为xyz.bat同一文件夹

  4. 运行文件

2
...问题中的文本文件中包含大约200个文件名。为什么del在已经发布解决方案以使其自动化的同时,按照您的建议手动添加?顺便说一句:任何理智的编辑器都将对搜索和替换(包括行尾(或使用正则表达式的行开始),宏)或块或列模式编辑(通常通过按住Option或Alt并随后选择a块,然后可以一次在多行上键入)。
Arjan
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.