如何使用批处理脚本对目录中的每个文件执行某些操作
如何迭代目录中的每个文件与.bat或.cmd文件?
为了简单起见,请提供一个只回应文件名或文件path的答案。
命令行用法:
for /f %f in (`dir /bc:\`) do echo %f
批量文件用法:
for /f %%f in (`dir /bc:\`) do echo %%f
更新 :如果目录包含名称中有空格的文件,则需要更改for /f
命令使用的分隔符。 例如,你可以使用pipe道字符。
for /f "delims=|" %%f in ('dir /bc:\') do echo %%f
更新2 :(原始答案之后快一年半:-))如果目录名称本身在名称中有一个空格,那么可以在for
:上使用usebackq
选项:
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
如果您需要使用输出redirect或命令pipe道,请使用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和Windows 7中可用。
最简单的方法:
从命令行,使用:
for %f in (*.*) do echo %f
从batch file(双倍百分号):
for %%f in (*.*) do echo %%f
从batch file中指定文件夹作为第一个参数:
for %%f in (%1\*.*) do echo %%f
使用
for /r path %%var in (*.*) do some_command %%var
有:
- path是起始path。
- %% var是一些标识符。
- *。*是一个文件掩码或一个variables的内容。
- some_command是将path和var连接为参数的命令。
(* .mp4)中的%f调用ffmpeg -i“%〜f”-vcodec copy -acodec copy“%〜nf.avi”
我有一些恶意软件,将目录中的所有文件都标记为隐藏/系统/只读。 如果有其他人发现自己处于这种情况,请进入目录并运行for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f
for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f
。