Muchas veces nos quedamos sin espacio en los servidores de
ficheros y con el comando FORFILES podemos realizar búsquedas como por ejemplo:
listar ficheros superiores a 20 MB (el ejemplo está al final).
FORFILES [/P
nombre de ruta] [/M máscara de búsqueda] [/S]
[/C comando] [/D [+ | -] {dd/MM/yyyy |
dd}]
Descripción:
Selecciona un archivo (o conjunto de
archivos) y ejecuta un comando en ese archivo. Esto es útil para trabajos por
lotes.
Lista de
parámetros:
/P
nombre de ruta: Indica la ruta de acceso para iniciar la
búsqueda. La carpeta
predeterminada es el
directorio de trabajo
actual (.).
/M
máscara de búsqueda Busca
archivos de acuerdo con una máscara de
búsqueda. La máscara de búsqueda
predeterminada es '*'.
/S Indica a forfiles que realice
recursividad en
subdirectorios. Como
"DIR /S".
/C
comando Indica el comando
que se va a ejecutar para
cada archivo. Las
cadenas de comandos deben
estar entre comillas
dobles.
El comando
predeterminado es "cmd /c eco
@file". Se pueden
usar las siguientes
variables en la cadena
de comandos:
@file - devuelve el nombre del archivo.
@fname - devuelve el nombre de archivo sin
extensión.
@ext - devuelve sólo la extensión del
archivo.
@path - devuelve la ruta de acceso completa
del archivo.
@relpath - devuelve la
ruta de acceso relativa
del archivo.
@isdir - devuelve "TRUE" si un tipo de
archivo es
un directorio y "FALSE"
para
archivos.
@fsize - devuelve el tamaño del archivo en
bytes.
@fdate - devuelve la última fecha de
modificación
del archivo.
@ftime - devuelve la última hora de
modificación del
archivo.
Para incluir caracteres
especiales en la línea
de comandos, use el
código hexadecimal del
carácter en formato
0xHH (ejemplo, 0x09 para
tabulador). Interno
comandos CMD.exe deben
estar precedidos por
"cmd /c".
/D
fecha Selecciona archivos
con última fecha de
modificación posterior
o igual a (+), o
anterior o igual a (-),
la fecha especificada
usando el formato
"dd/MM/yyyy"; o selecciona
archivos con última
fecha de modificación
posterior o igual a (+)
la fecha actual más
"dd" días, o
anterior o igual a (-) la fecha
actual menos
"dd" días. Un número de días "dd"
puede ser cualquier
número del intervalo
0-32768. "+"
se toma como signo predeterminado
si no se especifica.
/? Muestra este mensaje de
ayuda.
Ejemplos:
FORFILES /?
FORFILES
FORFILES /P
C:\WINDOWS /S /M DNS*.*
FORFILES /S
/M *.txt /C "cmd /c type @file | more"
FORFILES /P
C:\ /S /M *.bat
FORFILES /D
-30 /M *.exe
/C "cmd /c echo @path 0x09 se
cambió hace 30 días"
FORFILES /D 01/01/2001
/C "cmd /c echo @fname es
nuevo desde el 1 de enero de 2001"
FORFILES /D +6/8/2015 /C "cmd /c echo
@fname es nuevo hoy"
FORFILES
/M *.exe /D +1
FORFILES /S
/M *.doc /C "cmd /c echo @fsize"
FORFILES /M
*.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"
Para nuestro caso, hemos utilizado los siguientes parámetros:
SET HOST=%COMPUTERNAME%
FORFILES /P E: /S /M *.* /C "cmd /c if @fsize gtr
20971520 echo @fsize @path" >>C:\list\%HOST%.txt
Espero os ayude.