如何以递归方式列出Windows .bat文件中* .mp3类型的所有文件?

时间:2010-06-01 15:32:01

标签: windows directory batch-file

我想以递归方式列出所有以mp3结尾的文件的绝对路径,这些文件应该作为相对目录给出。

然后我想从文件中删除目录,我已经读过for范围内的变量必须包含在! s中。是吗?

我目前的代码如下:

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

2 个答案:

答案 0 :(得分:72)

使用命令DIR

dir /s/b *.mp3

上面的命令将搜索当前路径及其所有子节点。要获取有关如何使用此命令的更多信息,请打开命令窗口并键入DIR /?

答案 1 :(得分:6)

下面的批处理文件演示了如何从for循环中的变量中提取文件名的元素。将其另存为文件listfiles.bat,并运行" listfiles some \ folder * .mp3"。

我将文件查找设置为批处理文件中的子例程,以便您可以将其插入到自己的脚本中。

你也可以运行" for /?"在cmd shell中有关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