Tengo una carpeta con alrededor de 50 archivos diferentes (NOMBRE1.jpg, NOMBRE2.jpg, NOMBRE3.jpg...).
Tengo un programa que se ejecuta y divide cada archivo en aproximadamente 4 archivos diferentes y les cambia el nombre (NOMBRE1-0.jpg, NOMBRE1-1.jpg, NOMBRE2-0.jpg, NOMBRE2-1.jpg...)
Quiero crear un archivo .bat que se ejecute y elimine todos los archivos que no sean archivos *-0.jpg.
Hasta ahora lo más cerca que he estado es la línea:
for %i in (*) do if not %i == "*.jpg" del "%i"
pero esto simplemente elimina todos los archivos de la carpeta, incluidos los -0.jpg que quiero guardar.
¿Existe una línea mejor para usar?
Respuesta1
Quiero eliminar todos los archivos que no sean archivos *-0.jpg.
Tengo un programa que se ejecuta y divide cada archivo en aproximadamente 4 archivos diferentes y les cambia el nombre (NOMBRE1-0.jpg, NOMBRE1-1.jpg, NOMBRE2-0.jpg, NOMBRE2-1.jpg...)
Utilice el siguiente archivo por lotes (test.cmd):
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir /b NAME?-?.jpg') do (
rem get file name
set _fname=%%~ni
rem get last 2 characters of file name
set _last2=!_fname:~-2!
if [!_last2!] NEQ [-0] del "%%i"
)
Ejemplo:
F:\test>dir *.jpg
Volume in drive F is Expansion
Volume Serial Number is 3656-BB63
Directory of F:\test
08/12/2015 23:51 0 NAME1-0.jpg
08/12/2015 23:51 0 NAME1-1.jpg
08/12/2015 23:51 0 NAME2-0.jpg
08/12/2015 23:51 0 NAME2-1.jpg
4 File(s) 0 bytes
0 Dir(s) 1,776,919,613,440 bytes free
F:\test>test
F:\test>dir *.jpg
Volume in drive F is Expansion
Volume Serial Number is 3656-BB63
Directory of F:\test
08/12/2015 23:51 0 NAME1-0.jpg
08/12/2015 23:51 0 NAME2-0.jpg
2 File(s) 0 bytes
0 Dir(s) 1,776,919,613,440 bytes free
Otras lecturas
- Un índice AZ de la línea de comando CMD de Windows- Una excelente referencia para todo lo relacionado con la línea cmd de Windows.
- directorio- Mostrar una lista de archivos y subcarpetas.
- expansión retrasada habilitada- La expansión retrasada hará que las variables se expandan en el momento de la ejecución en lugar de en el momento del análisis.
- para /f- Comando de bucle contra los resultados de otro comando.
- si- Realizar condicionalmente un comando.
- colocar- Mostrar, configurar o eliminar variables de entorno CMD. Los cambios realizados con SET permanecerán solo durante la sesión CMD actual.