
En mi disco duro, tengo cientos de subcarpetas creadas diariamente que pueden contener un archivo de texto específico (Tracker.txt).
Me gustaría crear un archivo cmdline o BAT para obtener solo un resultado, el último archivo tracker.txt, con su ruta completa.
Lo intenté dir /s tracker.txt /OD
pero el resultado no se filtra por fecha.
¡Gracias!
Respuesta1
Puede canalizar los DIR /B /S /OD "tracker.txt"
resultados del comando a un archivo de registro temporal, pero hacer que use las FOR
sustituciones de bucle para colocar la marca de fecha y hora de cada archivo que coincida con el nombre seguido de una coma y luego la ruta explícita completa y el nombre del archivo (es decir YYYY-MM-DD hh:mm [AM/PM]
).
Luego usa el SORT
comando contra ese archivo para ordenar todas las líneas en ese archivo en un nuevo archivo ordenado pero con el archivo de marca de tiempo más reciente al final de la lista.
Por último, ejecutaría un FOR
bucle final a través de la lista de archivos final usando la coma como delimitador y luego solo configuraría la variable iteradora en ese bucle para cada ruta explícita completa y cuando llegue al final de esa lista, esta será la más nueva. archivo que es SET
el último y luego puede hacer algo con esa última variable configurada, que es la marca de fecha del archivo más reciente desde todos los directorios que especifica de forma recursiva.
Ejemplo de secuencia de comandos por lotes
Asegúrese de establecer el valor de la SET StartDir=
variable para que sea la carpeta raíz donde comienza el comando DIR para buscar los archivos de forma recursiva.
@ECHO ON
SET StartDir=C:\Users\User\Desktop\Test
IF EXIST "%temp%\~dir1temp.dat" DEL /Q /F "%temp%\~dir1temp.dat"
FOR /F "TOKENS=*" %%A IN ('Dir /B /S /OD "%StartDir%\tracker.txt"') DO ECHO %%~TA, %%~FPNXA>>"%temp%\~dir1temp.dat"
IF EXIST "%temp%\~dirsorttemp.dat" DEL /Q /F "%temp%\~dirsorttemp.dat"
SORT "%temp%\~dir1temp.dat">>"%temp%\~dirsorttemp.dat"
FOR /F "TOKENS=2 DELIMS=," %%A IN (%temp%\~dirsorttemp.dat) DO (SET File=%%~A)
ECHO %File%
:::<command to do something with %file%>
PAUSE
Recursos adicionales
- Clasificar
- Para /F
FOR /?
(sustituciones por lotes)In addition, substitution of FOR variable references has been enhanced. You can now use the following optional syntax: %~fI - expands %I to a fully qualified path name %~tI - expands %I to date/time of file
- Colocar