You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理for /f循环失效求助:无法执行ffprobe相关操作

批处理for /f循环不执行的问题排查与解决

问题原因

你的核心问题是for /f的tokens参数设置错误:

  • 你通过-of csv=p=0让ffprobe输出的是纯时长数字(比如4.129546),没有任何逗号分隔的字段
  • 但你给for /f指定了tokens=3,5,要求提取第3和第5个分隔字段——显然不存在这样的内容,导致for /f找不到符合条件的行,直接跳过了do子句的执行

修正后的脚本

把内层for /f的tokens=3,5移除(或改为tokens=1),同时确保延迟扩展的正确使用,修正后的代码如下:

setlocal enabledelayedexpansion

for %%b in (*.wav) do (
  set duration=0
  for /f %%a in ('ffprobe -i "%%b" -show_entries format^=duration -v quiet -of csv^=p^=0') do (
    set "duration=%%a"
    echo 'asdf' >> test.txt
    echo 文件名: %%b, 时长: !duration!
  )
)
endlocal

补充说明

  • 移除tokens=3,5后,for /f会默认提取整行内容,正好匹配ffprobe输出的纯时长数字
  • 嵌套循环中使用duration变量时,必须用延迟扩展语法!duration!,不能用普通的%duration%
  • 你脚本中的^=转义是正确的,不需要修改

内容的提问来源于stack exchange,提问作者Dmytro Lysak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 03:00:59