如何用.bat或.cmd文件遍历目录中的每个文件?
为简单起见,请提供一个只回显文件名或文件路径的答案。
命令行用法:
for /f %f in ('dir /b c:\') do echo %f
批处理文件使用:
for /f %%f in ('dir /b c:\') do echo %%f
更新:如果目录中包含名称为空格的文件,则需要更改for /f命令使用的分隔符。例如,您可以使用pipe char。
for /f
for /f "delims=|" %%f in ('dir /b c:\') do echo %%f
更新2:(在最初答案的一年半之后:-))如果目录名称本身在名称中有空格,您可以在for上使用usebackq选项:
for
usebackq
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
如果你需要使用输出重定向或命令管道,请使用转义字符(^):
^
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
使用
for /r path %%var in (*.*) do some_command %%var
:
另外,使用:
forfiles /s /m *.png /c "cmd /c echo @path"
forfiles命令在Windows Vista及以上版本中可用。
我有一些恶意软件,将目录中的所有文件标记为隐藏/系统/只读。如果其他人发现自己处于这种情况,则将cd放入该目录并运行for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f。
for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f
最简单的方法:
从命令行,使用:
for %f in (*.*) do echo %f
从批处理文件(加倍% %符号):
for %%f in (*.*) do echo %%f
从批处理文件的文件夹指定为第一个参数:
for %%f in (%1\*.*) do echo %%f
另一种方法:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"