如何使用批处理脚本对目录中的每个文件执行某些操作

如何迭代目录中的每个文件与.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