在每个子文件夹

时间:2018-04-11 18:06:50

标签: batch-file for-loop recursion subdirectory

我想运行一个脚本(我已经在.bat文件中)

"c:\Flac\flac.exe" -8 *.wav --verify --delete-input-file --replay-gain

在主文件夹的所有子文件夹中。

如果我将这个.bat文件复制/粘贴到任何文件夹并运行它,它会很好用,我会得到预期的结果。但是,如果我有一个包含50个文件夹的主文件夹,我想要将其复制并粘贴50次。

试图找出使用(我假设)命令的语法 FOR /R 但似乎无法做到正确。

例如,假设目录树是这样的:

c:\
     FLAC
          flac.exe
          flac BATCH.bat
     Music to be converted
          1
          2
          3

我想在C:\FLAC\flac BATCH.bat

的每个子文件夹中运行C:\Music to be converted

我试过

FOR /R "C:\Music to be converted" %X IN (*.wav) DO "C:\FLAC\flac BATCH.bat" "%X"

但这不起作用。我需要FOR /R命令来浏览子文件夹,不是吗?

1 个答案:

答案 0 :(得分:0)

根据我的评论。

从命令行:

For /D %A In ("C:\Music to be converted\*") Do @(PushD "%~A" & "C:\Flac\flac.exe" -8 *.wav --verify --delete-input-file --replay-gain & PopD)

或作为批处理文件:

@Echo Off
For /D %%A In ("C:\Music to be converted\*") Do (PushD "%%~A"
    "C:\Flac\flac.exe" -8 *.wav --verify --delete-input-file --replay-gain
    PopD)