2010-06-01 34 views
24

hola quiero enumerar de forma recursiva la ruta absoluta a todos los archivos que terminan en mp3 desde un directorio determinado que se debe dar como directorio relativo.windows .bat file cómo enumerar recursivamente todos los archivos de tipo * .mp3

me gustaría quitar también el directorio del archivo y he leído que las variables que están en un alcance se deben incluir en! S. ¿está bien?

mi código actual es el siguiente:

for /r %%x in (*.mp3) do ( 
    set di=%%x 
    echo directory !di! 
    C:\bla.exe %%x !di! 
) 

gracias!

Respuesta

61

¿Qué tal el comando DIR ...

dir /s/b *.mp3 

... el comando anterior buscará la ruta actual y todos estos niños. Para obtener más información sobre cómo utilizar este comando abre una ventana de comandos y escriba DIR /?

+0

gracias! y ahora necesitaría cada línea en una variable – clamp

+1

Buena suerte con esa parte. Mira el comando 'FOR'. –

+0

@MatthewWhited Los sitios web están fuera de línea. ¿Puedes arreglar eso? – minimen

1

Se pueden añadir los resultados a un archivo con '> [nombre de archivo]'

5

Este archivo por lotes muestra cómo extraer elementos de una nombre de archivo de la variable en un ciclo for. Guarde esto como listfiles.bat, luego ejecute "listfiles some \ folder * .mp3". Configuré el archivo encontrado como una subrutina en el archivo por lotes para que pueda insertarlo en sus propios scripts.

También puede ejecutar "for /?" en un shell cmd para obtener más información sobre el comando for.

@echo off 
setlocal enableextensions enabledelayedexpansion 
call :find-files %1 %2 
echo PATHS: %PATHS% 
echo NAMES: %NAMES% 
goto :eof 

:find-files 
    set PATHS= 
    set NAMES= 
    for /r "%~1" %%P in ("%~2") do (
     set PATHS=!PATHS! "%%~fP" 
     set NAMES=!NAMES! "%%~nP%%~xP" 
    ) 
goto :eof 
Cuestiones relacionadas