2012-05-09 16 views

Respuesta

41
FOR /F "delims=" %%i IN ('dir /b /ad-h /t:c /od') DO SET a=%%i 
echo Most recent subfolder: %a% 

(%i para Windows 10)

  • /b es para el formato desnudo
  • /ad-h sólo directorios, pero no los que están ocultos
  • t:c medios para usar la fecha de creación para la clasificación (use t:w para la última fecha de escritura)
  • /od tipo más antiguo primero
  • El for /F ejecuta el comando y establece una al nombre del directorio, el último es el más nuevo.

Si ejecuta esta directamente en la línea de comandos (no en un archivo por lotes), en lugar de utilizar %%%.

Esto funciona con el directorio actual- como @iesou señaló que tendrá que añadir la ruta del directorio después de dir si necesita utilizar cualquier otra ruta del directorio.

Ejemplo con la ruta del directorio especificado:

FOR /F "delims=" %%i IN ('dir "c:\Program Files" /b /ad-h /t:c /od') DO SET a=%%i 

Para evitar pasar por todas las subcarpetas, es posible cambiar el orden de clasificación de tener la más reciente primero (/o-d) y salir del bucle después de la primera llamar:

@echo off 
FOR /F "delims=" %%i IN ('dir /b /ad-h /t:c /o-d') DO (
    SET a=%%i 
    GOTO :found 
) 
echo No subfolder found 
goto :eof 
:found 
echo Most recent subfolder: %a% 
+3

+1 Para aclarar después del 'dir' y antes de'/b', debe ingresar al directorio raíz. Además, no necesita el eco si es parte de un lote. Simplemente puede usar la variable '% a%' porque el último valor al que se estableció es el directorio más nuevo. – iesou

+0

@iesou Eso es correcto: si no especifica el directorio, se usa el directorio actual. Se agregó a la respuesta y proporcionó una versión ligeramente modificada. – marapet

+0

@marapet He utilizado la secuencia de comandos anterior, sin embargo, si la carpeta tiene un espacio en ella, no funciona, ¿me he perdido algo? – Arthor

3

algunas mejoras para los nombres dir con espacios

FOR /F " tokens=*" %%i IN ('dir /b /ad-h /od') DO (SET a=%%i) 

ya que usted consigue a = Datos de programa en lugar de a = Aplicación
Nota: Tener en cuenta el espacio delante de "fichas"

+0

Otra mejora para ignorar algunas coincidencias: DO si no es "%% i" == ".." sino "%% i" == "." CONJUNTO – Thomas

Cuestiones relacionadas