Quiero crear un archivo por lotes que debe eliminar todas las subcarpetas de una carpeta y con más de 10 días, utilizando Windows 7archivo por lotes para eliminar las carpetas de más de 10 días en Windows 7
Cualquier ayuda se agradece.
Quiero crear un archivo por lotes que debe eliminar todas las subcarpetas de una carpeta y con más de 10 días, utilizando Windows 7archivo por lotes para eliminar las carpetas de más de 10 días en Windows 7
Cualquier ayuda se agradece.
Adaptado de this answer to a very similar question:
FORFILES /S /D -10 /C "cmd /c IF @isdir == TRUE rd /S /Q @path"
Debe ejecutar este comando desde dentro de la carpeta d:\study
. Eliminará todas las subcarpetas que tengan más de 10 días.
El /S /Q
después del rd
hace que elimine carpetas, incluso si no están vacías, sin preguntar.
Le sugiero que ponga el comando anterior en un archivo .bat y guárdelo como d:\study\cleanup.bat
.
Utilicé este comando, y las carpetas se han eliminado. Pero aparece un error: ERROR: el sistema no puede encontrar el archivo especificado. Necesito salir con error_level = 0 –
No creo que necesite la opción FORFILES/S ya que la eliminación de los subdirectorios será a través de la opción rd/S. – dmachop
Si desea utilizarlo con el parámetro (. Es decir, eliminar todos los subdirectorios bajo el directorio dado), a continuación, poner estas dos líneas en un archivo * .bat o .cmd *:
@echo off
for /f "delims=" %%d in ('dir %1 /s /b /ad ^| sort /r') do rd "%%d" 2>nul && echo rmdir %%d
y añadir Script ruta a su variable de entorno PATH. En este caso, puede llamar a su archivo por lotes desde cualquier ubicación (supongo que la ruta UNC también debería funcionar).
Ej .:
YourBatchFileName c:\temp
(puede usar comillas si es necesario)
eliminará todos los subdirectorios vacíos bajo carpeta c: \ temp
YourBatchFileName
eliminará todos los subdirectorios vacíos bajo el directorio actual.
FORFILES /S /D -10 /C "cmd /c IF @isdir == TRUE rd /S /Q @path"
no pude conseguir la sugerencia de Blorgbeard para trabajar, pero yo era capaz de conseguir que funcione con RMDIR vez de RD:
FORFILES /p N:\test /S /D -10 /C "cmd /c IF @isdir == TRUE RMDIR /S /Q @path"
Desde RMDIR no eliminará las carpetas que no están vacías así que también terminé usando este código para eliminar los archivos que tenían más de 10 días y luego las carpetas que tenían más de 10 días.
FOR /d %%K in ("n:\test*") DO (
FOR /d %%J in ("%%K*") DO (
FORFILES /P %%J /S /M . /D -10 /C "cmd /c del @file"
)
)
FORFILES /p N:\test /S /D -10 /C "cmd /c IF @isdir == TRUE RMDIR /S /Q @path"
I utiliza este código para purgar las sub carpetas en las carpetas dentro de prueba (ejemplo n: \ test \ abc \ 123 obtendría purgado cuando están vacíos, pero n: \ test \ abc no llegaría purgado
Tenga en cuenta: ¿desea eliminar todas las carpetas que tienen más de 10 días, o una sola carpeta * si * es anterior a 10 días ...? – Blorgbeard
eliminar todas las carpetas con más de 10 días de antigüedad, por ejemplo: carpeta que es más antigua que 10 días en D:/Se debe eliminar la prueba, no la que se creó recientemente. – nilesh
posible duplicación de [Eliminar directorios secundarios anteriores a 30 días] (http://stackoverflow.com/questions/3419091/delete-sub-directories-older-than-30-days) – Blorgbeard