In un file batch di Windows, esiste un modo per attraversare una gerarchia di cartelle/sottocartelle facendo un'azione su ciascun file?Come attraversare albero di cartelle/sottoalberi in un file batch di Windows?
15
A
risposta
13
Sì, si può fare questo usando il comando for
con l'interruttore /r
, ad es .:
for /r %%f in (*) do echo %%f
Vedi anche this question per un esempio.
4
È possibile utilizzare il comando FOR
con lo switch /r
, che eseguirà l'albero della directory eseguendo qualsiasi cosa specificata nell'istruzione DO
in ciascuna directory. Qui è possibile nidificare un'altra istruzione FOR
, utilizzando uno dir /b *.*
nel blocco SET
.
1
Fortunatamente ho uno scopo simile a questo thread. Credo ISTRUZIONI
dir /b /s /ad *.* [enter]
produrrà albero delle directory come risultato
complete_path\dir_01_lev_01
complete_path\dir_02_lev_01
complete_path\dir_03_lev_01
complete_path\dir_01_lev_01\dir_11_lev_02
complete_path\dir_01_lev_01\dir_12_lev_02
complete_path\dir_02_lev_01\dir_13_lev_02
complete_path\dir_02_lev_01\dir_14_lev_02
complete_path\dir_02_lev_01\dir_15_lev_02
complete_path\dir_03_lev_01\dir_16_lev_02
Ma voglio provocare, come di seguito
complete_path\dir_01_lev_01
complete_path\dir_01_lev_01\dir_11_lev_02
complete_path\dir_01_lev_01\dir_12_lev_02
complete_path\dir_02_lev_01
complete_path\dir_02_lev_01\dir_13_lev_02
complete_path\dir_02_lev_01\dir_14_lev_02
complete_path\dir_02_lev_01\dir_15_lev_02
complete_path\dir_03_lev_01
complete_path\dir_03_lev_01\dir_16_lev_02
Quindi, questo script nasce :)
@echo off
rem
rem ::: My name is Tree-Folder-8-Level.cmd
rem
setlocal
rem ::: Put started PATH here
set i01=complete_path
for /f "delims=" %%a in ('dir "%i01%" /ad /on /b') do call :p001 "%%a"
endlocal
goto :eof
:p001
rem ::: Display 1st LEVEL of started PATH
echo %~1
for /f "delims=" %%b in ('dir "%i01%\%~1" /ad /on /b') do call :p002 "%~1\%%b"
goto :eof
:p002
rem ::: Display 2nd LEVEL of started PATH
echo %~1
for /f "delims=" %%c in ('dir "%i01%\%~1" /ad /on /b') do call :p003 "%~1\%%c"
goto :eof
:p003
rem ::: Display 3rd LEVEL of started PATH
echo %~1
for /f "delims=" %%d in ('dir "%i01%\%~1" /ad /on /b') do call :p004 "%~1\%%d"
goto :eof
:p004
rem ::: Display 4th LEVEL of started PATH
echo %~1
for /f "delims=" %%e in ('dir "%i01%\%~1" /ad /on /b') do call :p005 "%~1\%%e"
goto :eof
:p005
rem ::: Display 5th LEVEL of started PATH
echo %~1
for /f "delims=" %%f in ('dir "%i01%\%~1" /ad /on /b') do call :p006 "%~1\%%f"
goto :eof
:p006
rem ::: Display 6th LEVEL of started PATH
echo %~1
for /f "delims=" %%g in ('dir "%i01%\%~1" /ad /on /b') do call :p007 "%~1\%%g"
goto :eof
:p007
rem ::: Display 7th LEVEL of started PATH
rem ::: and 8th LEVEL of started PATH
echo %~1
for /f "delims=" %%h in ('dir "%i01%\%~1" /ad /on /b') do echo %~1\%%h
goto :eof
Le idee più brillanti sono welco me. :)
0
dir /b /s /ad *.* | sort
Questo dovrebbe dare gli stessi risultati indipendentemente dalla profondità percorso
Problemi correlati
- 1. Attraversare un albero di rose con Data.Tree.Zipper
- 2. Attraversare e filtrare un albero in haskell
- 3. Funzionalmente attraversare un albero in C#
- 4. Script PHP per attraversare directory/albero di file e albero di uscita come UL annidati
- 5. equivalente in file batch di Windows
- 6. Come ottenere un timestamp di file batch UNIVERSAL Windows
- 7. Controllo dello psftp in un file batch di Windows
- 8. Script batch di Windows: reindirizza TUTTA l'output in un file
- 9. Aprire una pagina Web in un file batch di Windows
- 10. File batch di Windows - pipe to FIND
- 11. File batch di Windows: PID dell'ultimo processo?
- 12. Confronto tempi file batch di Windows
- 13. Come eseguire un comando batch di Windows in modo ricorsivo?
- 14. esecuzione di file batch di Windows comandi in modo asincrono
- 15. Come impostare la directory di lavoro di un comando in un file batch di Windows?
- 16. Come uccidere un albero processo in Windows
- 17. File batch di Windows per eseguire il file PHP
- 18. File batch di Windows - Concatena tutti i file nelle sottodirectory
- 19. Come attraversare un dacpac
- 20. Windows: stabilisce l'associazione file al file batch
- 21. come ottenere la data di ieri in un file batch
- 22. Come posso recuperare la versione di un file da un file batch su Windows Vista?
- 23. Come attraversare i file in una directory?
- 24. Come rilevare (ed eliminare) un file se è vuoto utilizzando un file batch di Windows?
- 25. Come verificare se un percorso è un file o una directory nel file batch di Windows?
- 26. Includere un file batch in un file batch
- 27. Elaborazione batch Conversioni di Pandoc in Windows
- 28. Come posso verificare la dimensione di un file in uno script batch di Windows?
- 29. Esiste un batch di programma per Windows?
- 30. Come posso creare un prompt "sei sicuro" in un file batch di Windows?