【问题标题】:How do I recursively list all files of type *.mp3 in a Windows .bat file?如何在 Windows .bat 文件中递归列出 *.mp3 类型的所有文件?
【发布时间】:2011-02-26 10:07:09
【问题描述】:

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

然后我想从文件中删除目录,并且我已经阅读了for-范围中的变量必须包含在!s 中。对吗?

我当前的代码如下所示:

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

【问题讨论】:

    标签: windows directory batch-file


    【解决方案1】:

    使用命令DIR:

    dir /s/b *.mp3
    

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

    【讨论】:

    • 这也适用于显式目录:dir /s/b "c:\My music\*.mp3"
    【解决方案2】:

    下面的批处理文件演示了如何在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
    

    【讨论】:

      猜你喜欢
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-18
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 2017-01-20
      相关资源
      最近更新 更多