En un archivo por lotes de Windows, ¿hay alguna manera de recorrer una jerarquía de carpetas/subcarpetas haciendo alguna acción en cada archivo?¿Cómo atravesar el árbol de carpetas/subárboles en un archivo por lotes de Windows?
15
A
Respuesta
13
sí, se puede hacer esto con el comando for
con el interruptor /r
, por ejemplo .:
for /r %%f in (*) do echo %%f
Ver también this question para un ejemplo.
4
Puede usar el comando FOR
con el interruptor /r
, que recorrerá el árbol de directorios ejecutando lo que especifique en la instrucción DO
en cada directorio. Allí puede anidar otra declaración FOR
, usando un dir /b *.*
en el bloque SET
.
1
Afortunadamente tengo un propósito bastante similar con respecto a este hilo. Creo INSTRUCCIÓN
dir /b /s /ad *.* [enter]
producirá árbol de directorios como resultado
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
Pero quiero dar como resultado la siguiente
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
Por lo tanto, este guión es NACE :)
@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
Las ideas más brillantes son welco yo. :)
0
dir /b /s /ad *.* | sort
que deben dar los mismos resultados independientemente de la profundidad camino
Cuestiones relacionadas
- 1. Atravesar un árbol de directorios en C++
- 2. ¿Cómo concatenar cadenas en un archivo por lotes de Windows?
- 3. Control de psftp en un archivo por lotes de Windows
- 4. ¿Cómo puedo comprobar el tamaño de un archivo en un archivo por lotes de Windows?
- 5. Incluir un archivo por lotes en un archivo por lotes
- 6. Ejecute el archivo por lotes como un servicio de Windows
- 7. archivo por lotes de Windows operador &&
- 8. La forma más rápida de eliminar un árbol de directorios en el archivo por lotes
- 9. Temporizador en el archivo por lotes de Windows
- 10. ¿Cómo establecer el directorio de trabajo de un comando en un archivo por lotes de Windows?
- 11. ¿Cómo recupero la versión de un archivo de un archivo por lotes en Windows Vista?
- 12. Invocar el archivo por lotes de Windows desde Linux
- 13. Ejecutando un script por lotes en el cierre de Windows
- 14. Redirigir argumentos pasados a un archivo por lotes de Windows
- 15. Archivo por lotes para reiniciar un servicio. Windows
- 16. Cómo crear un bucle infinito en el archivo por lotes de Windows?
- 17. ¿Cómo puedo atravesar el árbol HTML con Jsoup?
- 18. Tiempo de impresión en un archivo por lotes (milisegundos)
- 19. ¿Cómo puedo hacer un aviso "¿estás seguro?" En un archivo por lotes de Windows?
- 20. ¿Cómo ejecutar programas en el mismo directorio que el archivo por lotes de Windows?
- 21. Incrustar VBScript dentro del archivo por lotes de Windows
- 22. Ejecutando un archivo por lotes en el shell git
- 23. ¿Cómo se realiza un bucle en un archivo por lotes de Windows?
- 24. Ejecutando archivo por lotes en segundo plano cuando Windows inicia
- 25. Prueba del atributo de archivo en el archivo por lotes
- 26. texto Abrir archivo y programa de acceso directo en el archivo por lotes de Windows
- 27. Retire primero y el último carácter de una cadena en un archivo por lotes de Windows
- 28. Cómo sustituir contenidos de variables en un archivo por lotes de Windows
- 29. Cómo obtener el archivo más reciente utilizando un script por lotes en Windows
- 30. Archivo por lotes de Windows: ¿PID del último proceso?