批处理文件删除文本列表中包含相对名称的文件?

时间:2015-05-04 15:21:57

标签: batch-file

我需要一个bat来删除包含在文本文件中的RELATIVE名称的所有文件

在files目录中,文件的名称如下:

2
3

在要删除RELATIVE名称的文件列表中

1_a.jpg
1_b.jpg
1_c.jpg

我想删除包含2和3的所有文件(在文件列表中指定)

删除后保留在我的文件夹中这些文件(因为不包含2或3)

@echo off
setlocal
set folder="c:\somePath"
set excludeFile="c:\somePath2\someFile.txt"
for /f "eol=: delims=" %%F in ('dir /b /a-d %folder% ^| findstr /vibg:%excludeFile%') do del "%folder%\%%F"

我尝试了批处理文件,但我需要撤消它,因为这个bat不会删除文本列表中指定的文件

{{1}}

你能帮我吗?

这里有反向删除文件列表中的文件的代码。

Prolog union for A U B U C

2 个答案:

答案 0 :(得分:1)

for /f "usebackq delims=" %%a in ("file.txt") do echo del "*%%a*"

对于文件中的每个元素,删除名称中包含指定文本的文件。

del命令仅回显给控制台。如果输出正确,请删除echo

答案 1 :(得分:0)

其中LIST是具有“2”和“3”

的文件的名称
pushd %folder%
for /f %%a in (%LIST%) do @del %%a_*.jpg
popd

要删除除这些文件以外的所有文件,首先列出匹配的文件,然后使用FOR,删除其他所有文件:

set folder=C:\somepath\subdir
set LIST=C:\somepath\list.txt
set excludeFile=C:\somepath\tmp.txt
if exist %excludeFile% del %excludeFile%

for /f %%a in (%LIST%) do (
    dir %%a_*.jpg > nul && dir /b %%a_*.jpg >> %excludeFile%
)

for /f "eol=: delims=" %%F in ('dir /b /a-d %folder% ^| findstr /vibg:%excludeFile%') do del "%folder%\%%F"