Eliminar archivos en función de la extension en Windows

Aplicable en:
· Windows Server 2008
· Windows Server 2008 R2
· Windows Server 2012
· Windows Server 2012 R2


EL comando forfiles de Windows nos permite hacer una búsqueda en función de la extensión de los archivos y luego eliminarlos.

Por ejemplo, queremos eliminar todos los archivos con extensión .tmp de la carpeta c:\Windows\temp\
Primero listamos todos los archivos para comprobar que realmente la búsqueda es correcta antes de eliminar los documentos:

> forfiles /p "C:\Carpeta" /m *.tmp /C "cmd /c echo @file"



Si la búsqueda es correcta añadimos & Del @file para eliminarlos

> forfiles /p "C:\Carpeta" /m *.tmp /C "cmd /c echo @file & Del @file"



Parámetros:
· /p especifica la ruta donde se va a iniciar la búsqueda. Por defecto empieza en el directorio de trabajo actual.
· /m especifica el tipo de archivos. Si no se especifica busca cualquier tipo(*.*).
· /c para ejecutar comandos




Si el post te ha ayudado a salir de un marrón, te ha servido pá lo que sea o simplemente te ha gustado y quieres colaborar puedes pinchar en los anuncios ;)


Windows Robocopy: copiar sólo estructura de carpetas

Copiar la estructura de carpetas recursivamente, sin los archivos que pueda haber, sólo las carpetas vacías:
El parámetro /xf * excluye todos archivos
El parámetro /e indica recursividad, copia las subcarpetas
Origen d:
Destino f:

> robocopy d: f: /e /xf *

Si ademas queremos generar un log:

> robocopy d: f: /e /xf * /tee /log:EstructuraCarpetasLog.txt

Especificando carpetas. Si la carpeta destino no existe la crea:

> robocopy d:\folderA\ f:\copyfolderA\ /e /xf * 




Si el post te ha ayudado a salir de un marrón, te ha servido pá lo que sea o simplemente te ha gustado y quieres colaborar puedes pinchar en los anuncios 😉


Comando Windows Forfiles, ejemplos varios

Eliminar un archivo en concreto si tiene más de x días de antiguedad, en el ejemplo más de 10:

> forfiles /m test.txt /c "cmd /c Del test.txt " /d -10


Eliminar archivos de un tipo en concreto dentro de un directorio especificado con una antiguedad definida. En el ejemplo eliminar los archivos .rar de dentro la carpeta DATOS que tengan mas de 4 días de antiguedad:

> forfiles /p DATOS /M *.rar /c "cmd /c Del @file" /d -4


Ejemplo: eliminar carpetas recursivamente que sean más antiguas de 365 días dentro la Test de forma silenciosa:

> forfiles /p "C:\TEST" /d -365 /c "cmd /c echo @file tiene mas de 1 año de antiguedad. & rd @FILE /s /Q" 






Si el post te ha ayudado a salir de un marrón, te ha servido pá lo que sea o simplemente te ha gustado y quieres colaborar puedes pinchar en los anuncios ;)


Windows BATCH file: asignar valor a variable en función de los parámetros

Como asignar un valor a una variable en función de si se pasa algún parámetro.

Tenemos un caso en que la llamada a un archivo batch (.bat, .cmd)  a veces le pasamos un parámetro y a veces no, en función de eso hay una variable (cadena) que se le asigna el valor del parámetro o un valor alternativo.

Archivo batch con nombre prueba.bat:

@echo off
if "%1"=="" GOTO CambiarValor
set cadena=%1
echo El valor de la cadena es: %cadena%
pause
exit
:CambiarValor
set cadena=festivo
echo El valor de la cadena es: %cadena%
pause
exit

Continue reading