我想以递归方式列出所有以mp3
结尾的文件的绝对路径,这些文件应该作为相对目录给出。
然后我想从文件中删除目录,我已经读过for
范围内的变量必须包含在!
s中。是吗?
我目前的代码如下:
for /r %%x in (*.mp3) do (
set di=%%x
echo directory !di!
C:\bla.exe %%x !di!
)
答案 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