
Tengo una carpeta que una aplicación está llenando con archivos generados automáticamente. Allí se crean y almacenan extensiones csv y png. Necesitamos eliminar todos los archivos de la carpeta excepto ciertos archivos png donde el nombre del archivo comienza con "abc-". El sistema es un servidor Windows 2012 r2 y el objetivo es realizar esto mediante un archivo por lotes utilizando el programador de tareas todas las noches.
Intenté usar un par de scripts diferentes preescritos, pero no excluiría estos archivos png con prefijo, solo los eliminaría todos. ¿Cómo haría esto?
Respuesta1
¿Puedes probar powershell? Algo como:
$path = "C:\site\temp"
gci -Path $path | ? {!($_.Name -ilike "abc-*.png")} | % { Remove-Item -Path $_.FullName }
Respuesta2
Con Batch podrías hacerlo de esta manera:
@Echo OFF
For %%# In ("*.*") DO (
If /I "%%~x#" EQU ".png" (
(Echo "%%~n#"| Findstr "^abc-")1>nul 2>&1 || (
Del /Q "%%~#"
)
)
)
Pause&Exit
Repito todos los archivos (que tienen una extensión), luego, si el archivo tiene la extensión ".png", evalúo si el nombre del archivo comienza con "abc-" para excluirlo.
Haga una copia de seguridad de su carpeta antes de realizar la prueba.
Respuesta3
Además, haga una copia de seguridad del contenido de la carpeta en la que está trabajando antes de realizar la prueba.
Paso uno: cree un subdirectorio debajo de la carpeta en cuestión.
Paso dos: mueva los archivos para guardarlos en ese subdirectorio.
Paso tres: elimine todo lo que quede en la carpeta.
Paso cuatro: mueva los archivos del subdirectorio nuevamente a la carpeta.
Paso cinco: elimine el subdirectorio.
Paso seis: mira lo que tienes.
A continuación sigue un guión sencillo.
REM C:\SCRIPTS\MOVERPNG.CMD
C:
ECHO OFF
CLS
CD \SITE\TEMP
MD BAR
MOVE /y ABC-*.PNG \SITE\TEMP\BAR
DEL /y *.PNG
DEL /y *.CSV
CD BAR
MOVE *.PNG C:\SITE\TEMP
CD ..
RD /q BAR
ECHO MOVERPNG has completed.
DIR *.* /P /O:N