Necesita ayuda para crear un archivo por lotes especial

Necesita ayuda para crear un archivo por lotes especial

Necesito ayuda para crear un archivo por lotes que eliminará los archivos de registro en D:/carpetax en Servidor:\servidorx. Esto es para eliminar el proceso manual de limpieza del disco y evitar que una página se quede sin espacio en el disco. Los archivos con extensión .txt, .trc y .phd que tengan más de 5 días deben eliminarse.

¿Alguien tiene alguna idea?

gracias de antemano

Dan

Respuesta1

Resulta que tengo algo como esto por ahí.

forfiles -p "D:/folderx"  -s -m *.* /D -5 /C "cmd /c del @path /q

Esos son todos los archivos; para especificar extensiones modificarías el *.*bit.

forfiles -p "D:/folderx"  -s -m *.txt /D -5 /C "cmd /c del @path /q
forfiles -p "D:/folderx"  -s -m *.trc /D -5 /C "cmd /c del @path /q
forfiles -p "D:/folderx"  -s -m *.phd /D -5 /C "cmd /c del @path /q

(A veces todavía lo uso de la vieja escuela porque tengo una biblioteca de cosas de la vieja escuela que puedo reutilizar. Sin embargo, estoy reescribiendo esa biblioteca en PowerShell a medida que pasa el tiempo).

Respuesta2

Estoy de acuerdo con otros comentarios en que PowerShell debería usarse en el futuro para este tipo de tareas de automatización. Aquí hay un pequeño script que realizaría la limpieza que usted describe. Puede encontrar varias formas de ejecutar PowerShell desde un archivo por lotes si lo necesita por algún motivo, por ejemploesta respuesta. Mejor aún, simplemente ejecútelo directamente desde una tarea programada o una herramienta de automatización.

Guión de ejemplo:

$DIRECTORY = "D:\folderx"
$MAX_AGE_DAYS = 5
$matchedFiles = Get-ChildItem $DIRECTORY | where {$_.Extension.ToLower() -match "txt|trc|phd" -and $_.CreationTime -lt (Get-Date).AddDays(-1*$MAX_AGE_DAYS)}
$matchedFiles | Remove-Item

información relacionada