你怎么迭代,每个文件的目录。蝙蝠或.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 /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

其他提示

或者,使用:

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被命令来执行的路径和var联作为参数。

另一种方式:

for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"

我有一些恶意软件将目录中的所有文件标记为hidden / system / readonly。如果其他人发现自己处于这种情况,请进入目录并运行 for / f" delims = |" ('forfiles')中的%f执行attrib -s -h -r%f

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top