我将删除目录中的所有 .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"
==>
资源(必读):
- (命令参考)Windows CMD 命令行的 AZ 索引
- (有用的细节)Windows CMD Shell 命令行语法
- (
%~G
等专题页面)命令行参数(参数) - (
%var%
相对于!var!
特殊页面)启用延迟扩展 - (
>NUL
、、&
等||
专题页面)重定向 - (
^
插入符号、"
双引号"
等)转义符、分隔符和引号 - (
%variable:StrToFind=NewStr%
ETC。)变量编辑/替换