BATCH:如何读取.txt文件以删除具有特定文件名的某些列出的文件

时间:2014-04-21 01:55:43

标签: batch-file command-line windows-7 cmd command-prompt

希望我能为我正在制作的批处理文件提供一些帮助。

我的批处理文件当前扫描目录并记下所有文件夹,子文件夹并将它们导出到list.txt文件中,方法是执行以下操作:

dir /a "special\program\"/s /b /-p /o:gen >list.txt

它工作正常。但是我现在要做的是扫描list.txt文件并从.txt文件中的路径中删除某些文件名,我不想删除文件类型,而是删除名称的一部分。

因为基本上他们每个文件夹中的50多个文件和一些文件可能包含名称示例: enter image description here

看看文件:file_kool.rar,fileOk.rar,somethingRANDOM.rar,我想删除文件中带有名称“文件”的文件,所以“somethingRANDOM.rar,不包括file_kool.rar和fileOk.rar ,但我不知道如何添加排除项,因为我不能指定要删除的每个文件名,因为它们的方式太多,所以我猜他们可以使用通配符排除.rar文件中包含“文件”而且只有删除未注释的.rar文件?

我试过了:

@echo off
::Check Directories, Sub-Folders and list all files within and save to a list.txt file
dir /a "special\program\"/s /b /-p /o:gen >list.txt
::Read list.txt and delete all .rar files accept for the exception ones with "file" in them
for /F "tokens=*" %%A in (list.txt) do del /s special\program\ *file? 

或者代替这是他们在robocopy中排除文件的方式: IDEA#2:

robocopy "program" "special\program" /e /xf *something.rar* *.rar /xd random random2 *file?

我试过这个,这是我喜欢的首选,但我无法解决如何在排除中添加我想要删除所有.rar文件接受包含“文件”(排除)的事实。

有没有人有解决方法。我相信他们在这里很简单,我不知道了吗?

注意:我已经解决了我的问题,对不起每个人,因为我输入它让我感到困惑。

2 个答案:

答案 0 :(得分:2)

下面的批处理文件删除名称以“file”开头的所有文件放在“special \ program”文件夹中:

cd "special\program"
del /S file*.*

如果您想在任何地方删除名称中包含“file”的文件,只需按以下方式更改通配符:*file*.*

编辑回复评论

在你的问题中,你说:“我想删除名为”file“的文件”,所以我想你要删除文件名的任何部分都有“文件”的文件。现在你在评论中说你想要相反的事情!我强烈建议你edit your question并明确这一点,包括你改变原来的问题;否则,可能会阅读此主题的人会感到困惑,直到他们在主题的最后阅读您的小评论... :-(

无论如何,下面的批处理文件做你想要的(我希望如此),即:删除“special \ program”文件夹中的所有.rar文件除了那些有“file”子字符串的文件文件名的任何部分

@echo off
setlocal EnableDelayedExpansion

for /R "special\program" %%a in (*.rar) do (
   set "filename=%%~Na"
   if "!filename:file=!" equ "%%~Na" del "%%a"
)

答案 1 :(得分:0)

dir /a "special\program\"/s /b /-p /o:gen |find /v /i "file" >list.txt

应该做你看起来要问的事。

您拥有它并且您想要的数据示例有很长的路要走....