¿Hay alguna forma de buscar archivos en un directorio basado en la fecha? Quiero encontrar todos los archivos con fecha de creación mayor que una fecha específica, ¿es posible hacerlo con el comando dir
?Buscar por fecha usando la línea de comando
Respuesta
dir
por sí misma no puede filtrar por fecha, pero puede analizar la salida de dir
usando el comando for
. Si en su país dir
imprime la fecha en formato YMD, entonces solo necesita compararla con una fecha determinada. Si el orden de las partes de la fecha es diferente, entonces tiene que usar otro comando for
para analizar la fecha y cambiarla a YMD. Esto mostrará una lista de archivos modificados después del 5 de febrero.
@Echo Off
for /f "usebackq tokens=1,4 skip=5" %%A in (`dir /-c`) do (
if %%A GTR 2012-02-05 echo %%A %%B
)
if
hace la comparación de cadenas estándar, por lo que al final se puede obtener línea adicional si la línea pasa Resumen de la comparación. Para evitarlo, puede utilizar if %%A GTR 2012-02-05 if exist %%B echo %%A %%B
EDIT: Hay incluso mejor enfoque que evita el análisis de dir
de salida y también permite buscar por el tiempo, no sólo por fecha:
@Echo Off
for /r %%A in (*) do (
if "%%~tA" GTR "2012-02-05 00:00" echo %%~tA %%A
)
gracias eso es lo que necesito, ¿puedo usar la hora: minutos con la comparación. Finalmente, hay libros útiles para aprender scripting de shell. – developer
Para usar los minutos en comparación, realice los siguientes cambios: 'tokens = 1,2,4' y luego' if "%% A %% B" GTR "2012-02-05 11:23" echo %% A %% B %% C' Para aprender, puede comenzar con http://en.wikipedia.org/wiki/Batch_file y luego continuar con tres primeros enlaces externos. – MBu
Bien usted no puede Por lo que yo sé, pero este tipo de creo que funcionará, pero aún así no sirve de nada a menos que tenga un intervalo de fechas corta;)
for /R %a in (01 02 03 04 05) do dir | find "02/%a/2012"
¡Agradable! Use 'dir/tc' para trabajar con las fechas de creación. – Marc
Acaba de ser descubierto el comando forfiles
.
forfiles /s /m *.log /d -7 /c "cmd /c echo @path"
una lista de todos los archivos de registro modificados más de siete días de edad, en todos los subdirectorios, aunque no parece que mirar la fecha de creación. Admite la especificación de una fecha específica.
Consulte forfiles /?
para obtener más información.
¡Súper útil! (cuando no hay disponible PowerShell) NOTA: Si desea que los archivos se modifiquen después de una fecha, necesita '+' en lugar de '-' para el parámetro'/d', entonces algo como '+ 02/05/2012' en lugar de' -7 '. También para mostrar la salida de fecha y hora de cada archivo, puede usar 'cmd/c echo @fdate @ftime @ path' – bob
+1 Esta debería ser la respuesta aceptada –
Advertencia: Ay de ustedes que quieran usar las rutas UNC con esto. O en muchos otros lugares en Windows ... –
Esto es fácil de hacer con PowerShell. Sé que su pregunta era sobre cmd, pero PS está incluida en Windows 7 y versiones posteriores. También se puede instalar en XP y Vista.
Utilice el comando Get-ChildItem
(con alias dir
) para obtener todos los archivos. Transmita la salida al comando Where-Object
(con alias ?
) para devolver archivos donde la fecha sea mayor que (-gt
) una fecha específica.
Para PowerShell 2.0 (por defecto en Windows 7), se debe utilizar un ScriptBlock:
dir -file | ? {$_.LastWriteTimeUtc -gt ([datetime]"2013-05-01")}
Para Powershell 3.0 (por defecto en Windows 8) y hasta puede utilizar esta sintaxis más simple en su lugar:
dir -file | ? LastWriteTimeUtc -gt ([datetime]"2013-05-01")
El comando dir -file
devuelve una colección de objetos System.IO.FileInfo
. Este objeto de archivo tiene muchas propiedades que puede usar para el filtrado complejo (tamaño de archivo, fecha de creación, etc.). Consulte MSDN para la documentación.
Probé: dir. * .svg | ? LastWriteTimeUtc -gt ([datetime] "2013-05-01") pero recibió "Where-Object: no se puede vincular el parámetro 'FilterScript'. No se puede convertir el valor" LastWriteTimeUtc "de tipo" System.String "para escribir" System.Management ". . Automation.ScriptBlock ". –
Creo que la sintaxis que utilicé funciona para PS 3.0 y superior. Si tiene PS 1.0 o 2.0, debe usar un scriptblock de la siguiente manera:' |? {$ _. LastWriteTimeUtc -gt ([datetime] "2013-05-01")} ' – bouvierr
Ah, estoy en Windows 7 con PS 2. Gracias –
una manera más fácil para mí es algo así como
dir /s *.xlsx | find "07/14/2016"
- 1. ¿Cómo buscar en los mensajes de confirmación usando la línea de comando?
- 2. Comparar tiempo usando el comando de fecha
- 3. Buscar el día de la fecha usando JQuery
- 4. Ejecutar el comando de línea de comando interactivo usando C#
- 5. Android Instalar apk usando la línea de comando busybox
- 6. proyecto de importación de eclipse usando la línea de comando
- 7. borrar el caché del navegador por la línea de comando
- 8. Usando eclipse comparator desde la línea de comando
- 9. Transferir archivo usando MSTSC en la línea de comando
- 10. Historial de Git - buscar la línea perdida por palabra clave
- 11. extrayendo la primera línea del archivo usando el comando awk
- 12. git: ¿Hay una opción de línea de comando para "Ordenar por fecha" para gitk?
- 13. Buscar la fecha del lunes con Python
- 14. jQuery buscar por atributo css en línea
- 15. Buscar algoritmo de fecha de domingo anterior
- 16. ¿Cómo puedo obtener y formatear la fecha de ayer en la línea de comando?
- 17. Genere dinámicamente el comando de la línea de comando, luego invoque usando powershell
- 18. Buscar fecha específica en la semana actual
- 19. Comando de fecha con zsh
- 20. Obtener la fecha de ayer usando Fecha
- 21. ¿Cómo uso Perl en la línea de comando para buscar el resultado de otros programas?
- 22. ¿Cómo agregar una línea vacía en un archivo de texto usando la línea de comando?
- 23. Usando argumentos de línea de comando en Python: Comprender sys.argv
- 24. Línea de comando args en el programa C usando Netbeans
- 25. Usando argumentos de línea de comando en VBscript
- 26. Convertir de Unix en la línea de comando
- 27. Línea de comando de Maven
- 28. Herramienta de línea de comando en Objective-C usando Foundation?
- 29. Código de compilación usando JavaFX 2.0 (usando la línea de comando)
- 30. vim: inserte el texto seleccionado en la línea de comando?
'dir/OD' clasificará por fecha, al menos – nolegs
dir no se puede, pero el comando Unix encontrar * puede *. [Dos puertos disponibles aquí] (http://sourceforge.net/projects/unxutils/) –
http://superuser.com/a/326025/3588 en SuperUser es una solución elegante que utiliza 'xcopy' sin copiar –