Quitaría todos los archivos .jpg de un directorio,exceptoaquellos especificados en un archivo de texto (por ejemplo, test.txt).
Este archivo de texto contiene una lista de miles de nombres de archivos que coinciden exactamente con los que quieromantener.
Tambien esbásicoque los únicos nombres de archivos que incluyan el símbolo ^
se incluyan para su eliminación.
En otras palabras, todos los archivos sin intercalación ni siquiera deberían considerarse para su eliminación mediante este script.
A continuación se muestra el ejemplo de lo que hay en el archivo de texto.
1022SS^BLACK.jpg
1022SS^BROWN.jpg
1022SS^DK GREEN.jpg
1022SS^GREY.jpg
1022SS^MAROON.jpg
1022SS^NAVY.jpg
Comportamiento deseado:
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
Es necesario conservar GREY.jpg y BLACK.jpg porque NO hay símbolo de zanahoria en el nombre del archivo.
Encontré lo siguiente en este sitio que hace exactamente lo contrario. Pero podría ser un buen comienzo para alguien que sepa cómo hacer esto:¿Cómo eliminar archivos de una carpeta usando una lista de nombres de archivos en Windows?
Respuesta1
Piensa en el siguiente ejemplo de una sola línea:
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"
APORTE(directorio y archivo de excepción):
==>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
Producción:
==>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"
==>
Recursos(lectura obligatoria):
- (referencia de comando)Un índice AZ de la línea de comando CMD de Windows
- (particularidades útiles)Sintaxis de la línea de comandos de Windows CMD Shell
- (
%~G
etc. página especial)Argumentos de la línea de comando (parámetros) - (
%var%
vs.!var!
página especial)Habilitar expansión retrasada - (
>NUL
,&
,||
etc. página especial)Redirección - (
^
intercalación,"
comillas dobles"
, etc.)Caracteres de escape, delimitadores y comillas - (
%variable:StrToFind=NewStr%
etc.)Editar/reemplazar variables