batch-file - script - lenguaje batch
MS Dos Batch borra archivos viejos en el directorio (1)
Posible duplicado:
Archivo por lotes para eliminar archivos anteriores a N días
Intento hacer un archivo por lotes DoS para ir a través de un directorio con aproximadamente 500,000 archivos y me gustaría eliminar todos los archivos anteriores a 1 año.
Aquí está mi código hasta ahora
@echo off
title File Exclusion Act
for /f "usebackq delims=|" %%f in (`dir /b "C:/Users/Travis/Desktop/LotsOfFiles"`) do echo %%f
pause
Hasta ahora, realiza un bucle e imprime todos los archivos en el directorio especificado.
Cualquier consejo / ayuda es muy apreciado.
El archivo de proceso por lotes a continuación debe invocarse con el número de días para que los archivos antiguos se eliminen a partir de hoy. Por ejemplo, use 365 para eliminar archivos de 1 año.
@echo off
setlocal EnableDelayedExpansion
call :DateToJDN %date% oldDate= -%1
for /F "skip=5 tokens=1-4*" %%a in (''dir /A:-D /O:D'') do (
call :DateToJDN %%a fileDate=
if !fileDate! lss %oldDate% (
del "%%e"
) else (
goto :EOF
)
)
goto :EOF
:DateToJDN Date JDN= [+-days]
for /F "tokens=1-3 delims=/" %%x in ("%1") do set /A mm=10%%x %% 100, dd=10%%y %% 100, yy=%%z
if %mm% lss 3 set /A mm+=12, yy-=1
set /A a=yy/100, b=a/4, c=2-a+b, e=36525*(yy+4716)/100, f=306*(mm+1)/10, %2=C+DD+E+F-1524%3
exit /B
Si su formato% date% no es MM / DD / YYYY, vuelva a ordenar las variables mm, dd e yy en la primera línea de la subrutina DateToJDN.