2012-05-09 14 views

risposta

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

(%i per Windows 10)

  • /b è per il formato nudo
  • /ad-h solo le directory, ma non quelle nascoste
  • t:c mezzi da usare la data di creazione per l'ordinamento (usare t:w per ultima data di scrittura)
  • /od sorta prima i più vecchi
  • Il for /F esegue il comando e imposta una per il nome della directory, l'ultima è la più recente.

Se si esegue questo direttamente sulla riga di comando (non in un file batch), utilizzare % invece di %%.

questo funziona con la directory corrente - come @iesou rilevare è necessario aggiungere il percorso della directory dopo dir se avete bisogno di usare qualsiasi altro percorso di directory.

Esempio con percorso di directory specificato:

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

Per evitare che passando attraverso tutte le sottocartelle, è possibile modificare l'ordinamento per avere il primo più recente (/o-d) e uscire dal ciclo for dopo la prima chiamare:

@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 Per chiarire dopo 'dir' e prima di'/b' è necessario inserire la directory root. Inoltre non hai bisogno dell'eco se fa parte di un batch. Puoi semplicemente usare la variabile '% a%' perché l'ultimo valore su cui è stata impostata è la directory più recente. – iesou

+0

@iesou Corretto - se non si specifica la directory, viene utilizzata la directory corrente. Aggiunto alla risposta e fornito una versione leggermente modificata. – marapet

+0

@marapet Ho usato lo script sopra tuttavia se la cartella ha uno spazio, non funziona, ho perso qualcosa? – Arthor

3

Qualche miglioramento per i nomi dir con spazi

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

ora si ottiene un = Dati applicazioni invece di un = Application
Nota: prestare attenzione allo spazio di fronte a "gettoni"

+0

Un altro miglioramento per ignorare alcune corrispondenze: DO se non "%% i" == ".." se non "%% i" == "." IMPOSTATO – Thomas

Problemi correlati