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

cla*_*amp 31 windows directory batch-file

我想以递归方式列出mp3从给定目录结束的所有文件的绝对路径,该目录应作为相对目录给出.

然后我想从文件中删除目录,并且我已经读过在for-scope 中的变量必须用!s 括起来.是对的吗?

我当前的代码如下所示:

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

Mat*_*ted 78

使用命令DIR:

dir /s/b *.mp3
Run Code Online (Sandbox Code Playgroud)

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


yoy*_*oyo 7

下面的批处理文件演示了如何从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
Run Code Online (Sandbox Code Playgroud)