ディレクトリ内のすべての.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 シェルのコマンド ライン構文
- (
%~G
など特設ページ)コマンドライン引数(パラメータ) - (特別ページ
%var%
との比較)!var!
遅延拡張を有効にする - (
>NUL
、、&
等||
特設ページ)リダイレクション - (
^
キャレット、"
二重引用符"
など)エスケープ文字、区切り文字、引用符 - (
%variable:StrToFind=NewStr%
など)変数の編集/置換