首页 文章

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

提问于
浏览
233

如何使用.bat或.cmd文件迭代目录中的每个文件?

为简单起见,请提供一个只回显文件名或文件路径的答案 .

6 回答

  • 48

    最简单的方法:

    从命令行,使用:

    for %f in (*.*) do echo %f
    

    从批处理文件(双倍百分号符号):

    for %%f in (*.*) do echo %%f
    

    从具有指定为第一个参数的文件夹的批处理文件:

    for %%f in (%1\*.*) do echo %%f
    
  • -2

    使用

    for /r path %%var in (*.*) do some_command %%var
    

    有:

    • 路径是起始路径 .

    • %% var是一些标识符 .

      • . *是文件掩码或变量的内容 .
    • some_command是使用path和var连接作为参数执行的命令 .

  • 30

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

  • 5

    命令行用法:

    for /f %f in (`dir /b c:\`) do echo %f
    

    批处理文件用法:

    for /f %%f in (`dir /b c:\`) do echo %%f
    

    Update :如果目录包含名称中包含空格的文件,则需要更改 for /f 命令正在使用的分隔符 . 例如,您可以使用管道char .

    for /f "delims=|" %%f in ('dir /b c:\') do echo %%f
    

    Update 2 :(在原始答案之后快一年半:-))如果目录名本身在名称中有空格,则可以使用 for 上的 usebackq 选项:

    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
    
  • 316

    或者,使用:

    forfiles /s /m *.png /c "cmd /c echo @path"
    

    forfiles命令在Windows Vista和Windows 7中可用 .

  • 83

    其他方式:

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

相关问题