Batch file 要删除文本列表中包含相对名称的文件吗?

Batch file 要删除文本列表中包含相对名称的文件吗?,batch-file,Batch File,我需要一个bat来删除文本文件中包含的具有相对名称的所有文件 在文件目录中,文件的名称如下: 1_a.jpg 1_b.jpg 1_c.jpg 2_a.jpg 3_a.jpg 3_b.jpg 在文件列表中,要删除的相对名称为 2 3 我要删除包含2和3的所有文件(在文件列表中指定) 删除后,这些文件仍保留在我的文件夹中(因为不包含2或3个) 我尝试批处理文件,但我需要将其反转,因为此bat不会删除文本列表中指定的文件 @echo off setlocal set folder="c:\some

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

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

1_a.jpg
1_b.jpg
1_c.jpg
2_a.jpg
3_a.jpg
3_b.jpg
在文件列表中,要删除的相对名称为

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

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

我尝试批处理文件,但我需要将其反转,因为此bat不会删除文本列表中指定的文件

@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"
你能帮我吗

这里有代码可以反向删除文本列表中的文件

对于/f“usebackq delims=“%a in”(“file.txt”)do echo del”*%a*“
对于文件中的每个元素,删除名称中包含指示文本的文件


del
命令仅回显到控制台。如果输出正确,请删除回声,其中列表是带有“2”和“3”的文件名

要删除除这些文件外的所有文件,请首先列出匹配的文件,然后使用“为您所拥有的”删除所有其他文件:

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"

您好,如何设置包含要删除文件的路径文件夹?@placidomaio,您可以使用
del“c:\somewhere\*%%a*”
,或者,如果文件夹位于变量中,则可以使用
del“%folder%\*%%a*”
,也可以在执行
for
命令之前,使用
cd
pushd
更改当前活动目录如果解决方案有效,是否可以添加阻止检查控件以阻止删除不存在的文件?如果我在文本列表中有一个单词而不存在一个指定的文件?例如,如果在列表i add 9中没有一个文件名为包含9。@placidomaio,如果存在“c:\somewhere\*%a*”del“c:\somewhere\*%a*”,或者干脆忘记检查并隐藏“错误”消息,使用
del“c:\somewhere\*%a*”2>nul
(同样适用于前面注释中的其余选项)谢谢你的解决方案,非常感谢你是一个伟大的程序员。祝你今天愉快,再次感谢:)
pushd %folder%
for /f %%a in (%LIST%) do @del %%a_*.jpg
popd
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"