我會刪除目錄中的所有 .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。)變數編輯/替換