¿Cómo puedo obtener la subcarpeta más nueva en el directorio?
Lo necesito en el comando MKLINK /D
.Obtener el último comando de lote de directorio creado
Gracias
¿Cómo puedo obtener la subcarpeta más nueva en el directorio?
Lo necesito en el comando MKLINK /D
.Obtener el último comando de lote de directorio creado
Gracias
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 ocultost: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 primerofor /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%
+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
@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
@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
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"
Otra mejora para ignorar algunas coincidencias: DO si no es "%% i" == ".." sino "%% i" == "." CONJUNTO – Thomas
http://stackoverflow.com/questions/17237324/how-to- find-the-last-directory-created-in-batch/20149008 # 20149008 – Farah