如何使用.bat或.cmd文件迭代目录中的每个文件?
为简单起见,请提供一个只回显文件名或文件路径的答案.
命令行用法:
for /f %f in ('dir /b c:\') do echo %f
批处理文件用法:
for /f %%f in ('dir /b c:\') do echo %%f
更新:如果目录包含名称中包含空格的文件,则需要更改for /f
命令正在使用的分隔符.例如,您可以使用管道char.
for /f "delims=|" %%f in ('dir /b c:\') do echo %%f
更新2 :(在原始答案之后快一年半:-))如果目录名称本身在名称中有空格,则可以使用以下usebackq
选项for
:
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
如果需要使用输出重定向或命令管道,请使用escape char(^
):
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
或者,使用:
forfiles /s /m *.png /c "cmd /c echo @path"
forfiles命令在Windows Vista及更高版本中可用.
最简单的方法:
从命令行,使用:
for %f in (*.*) do echo %f
从批处理文件(加倍%百分号):
for %%f in (*.*) do echo %%f
从具有指定为第一个参数的文件夹的批处理文件:
for %%f in (%1\*.*) do echo %%f
使用
for /r path %%var in (*.*) do some_command %%var
有:
路径是起始路径.
%% var是一些标识符.
*.*是文件掩码或变量的内容.
some_command是使用path和var连接作为参数执行的命令.
其他方式:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"