删除目录中的所有 .jpg 文件,**除了**文本文件中指定的文件

删除目录中的所有 .jpg 文件,**除了**文本文件中指定的文件

我将删除目录中的所有 .jpg 文件,除了文本文件中指定的那些(例如 test.txt)。
此文本文件包含数千个文件名的列表,这些文件名与我想要的文件名完全匹配保持
也是基本的仅包含该符号的文件名^才会被删除。
换句话说,此脚本根本不会考虑删除所有不带插入符号的文件。

以下是文本文件中内容的示例。

1022SS^BLACK.jpg
1022SS^BROWN.jpg
1022SS^DK GREEN.jpg
1022SS^GREY.jpg
1022SS^MAROON.jpg
1022SS^NAVY.jpg

期望的行为:

KEEP_GREY.jpg    
KEEP_BLACK.jpg
KEEP_1022SS^BLACK.jpg
KEEP_1022SS^BROWN.jpg
KEEP_1022SS^DK GREEN.jpg
KEEP_1022SS^GREY.jpg
KEEP_1022SS^MAROON.jpg
KEEP_1022SS^NAVY.jpg
DELETE_SS^BLACK.jpg
DELETE_SS^BROWN.jpg
DELETE_SS^DK GREEN.jpg
DELETE_SS^GREY.jpg
DELETE_SS^MAROON.jpg
DELETE_SS^NAVY.jpg

需要保留 GREY.jpg 和 BLACK.jpg 因为文件名中没有胡萝卜符号。

我在这个网站上找到了以下内容,它的作用恰恰相反。但对于知道如何做到这一点的人来说,这可能是一个好的开始:如何使用 Windows 中的文件名列表从文件夹中删除文件?

答案1

想出下一个单行示例:

cmd /E /V /C for /F "tokens=*" %G in ('dir "SU\Files In\972965\*.jpg" /B /S') ^
do @set "xx=%~nxG" ^& if "!xx:^=€!" NEQ "!xx!" (^
findstr /I /C:"!xx!" "SU\Files In\972965.txt" ^
 ^>NUL ^&^& echo retain "%~fG" ^|^| echo delete "%~fG" ) else echo RETAIN "%~fG"

输入(目录和异常文件):

==>dir "D:\bat\SU\Files In\972965\" /B /S
D:\bat\SU\Files In\972965\1022SS-YELLOW.jpg
D:\bat\SU\Files In\972965\1022SS^BLACK.jpg
D:\bat\SU\Files In\972965\1022SS^BROWN.jpg
D:\bat\SU\Files In\972965\1022SS^DK GREEN.jpg
D:\bat\SU\Files In\972965\1022SS^GREY.jpg
D:\bat\SU\Files In\972965\1022SS^MAROON.jpg
D:\bat\SU\Files In\972965\1022SS^NAVY.jpg
D:\bat\SU\Files In\972965\1022SS_BLUE.jpg

==>type "D:\bat\SU\Files In\972965.txt"
1022SS^BROWN.jpg
1022SS^DK GREEN.jpg
1022SS^NAVY.jpg
1022SS^PINK.jpg

输出

==>cmd /E /V /C for /F "tokens=*" %G in ('dir "SU\Files In\972965\*.jpg" /B /S') do  @set
"xx=%~nxG" ^& if "!xx:^=€!" NEQ "!xx!" (findstr /I /C:"!xx!" "SU\Files In\972965.txt" ^>NU
L ^&^& echo retain "%~fG" ^|^| echo delete "%~fG" ) else echo RETAIN "%~fG"
RETAIN "d:\bat\SU\Files In\972965\1022SS-YELLOW.jpg"
delete "d:\bat\SU\Files In\972965\1022SS^BLACK.jpg"
retain "d:\bat\SU\Files In\972965\1022SS^BROWN.jpg"
retain "d:\bat\SU\Files In\972965\1022SS^DK GREEN.jpg"
delete "d:\bat\SU\Files In\972965\1022SS^GREY.jpg"
delete "d:\bat\SU\Files In\972965\1022SS^MAROON.jpg"
retain "d:\bat\SU\Files In\972965\1022SS^NAVY.jpg"
RETAIN "d:\bat\SU\Files In\972965\1022SS_BLUE.jpg"

==>

资源(必读):

相关内容