Você deve usar sua FOR
construct para CD
em cada subdiretório e executar seu comando a partir do subdiretório.
Source Para / R Loop através de arquivos (subpastas Recurse)
Repetir os arquivos (subpastas Recurse)
Syntax FOR /R [[drive:]path] %%parameter IN (set) DO command
Key
drive:path : The folder tree where the files are located.
set : A set of one or more files. Wildcards must be used. If (set) is a period character (.) then FOR will loop through every folder.
command : The command(s) to carry out, including any command-line parameters.
%%parameter : A replaceable parameter: in a batch file use %%G (on the command line %G)
This command walks down the folder tree starting at [drive:]path, and executes the DO statement against each matching file.
If the [drive:]path are not specified they will default to the current drive:path.
Um exemplo
Altere o diretório para cada subpasta em C: \ Work por vez:
FOR /R "C:\Work\" %%G in (.) DO (
Pushd %%G
Echo now in %%G
Popd )
Echo "back home"
Tente o seguinte como seu arquivo de lote
FOR /R %%G in (.) DO (
Pushd %%G
IF EXIST "*.mp3" (
DIR /B *.mp3 > "%CD%.m3u"
)
Popd
)
Notas:
- % CD% é o diretório atual.