텍스트 파일에 지정된 **제외** 디렉터리의 모든 .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"

==>

자원(필수 읽기):

관련 정보