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

如何在PowerShell中实现cmd遍历MP4文件执行DVR-Scan命令的等效操作?

PowerShell中等效CMD批量处理MP4文件的正确实现

原CMD命令作用:遍历当前目录下所有.mp4文件,调用dvr-scan.exe提取事件片段到events/目录,并添加时间戳:

for %f in (*.mp4) do "C:\Program Files\DVR-Scan\dvr-scan.exe" -i %f -d events/ -tc

你之前的写法存在以下问题:

  • 写法1:缺少PowerShell的调用操作符&,带空格的可执行文件路径会被当成字符串,无法触发程序执行
  • 写法2:仅输出拼接后的命令字符串,没有实际调用程序
  • 写法3:同样错误地将命令作为字符串处理,未正确调用可执行文件

正确实现方式

以下两种写法都可以实现等效功能,推荐第一种(更贴近原CMD的执行逻辑):

方法1:使用调用操作符&直接执行

Get-ChildItem -Filter *.mp4 -File | ForEach-Object {
    & "C:\Program Files\DVR-Scan\dvr-scan.exe" -i $_.FullName -d events/ -tc
}
  • -Filter *.mp4:限定只处理MP4文件,和原CMD的*.mp4匹配
  • &:PowerShell中用来执行路径包含空格的可执行文件的调用操作符
  • $_.FullName:获取当前文件的完整路径,对应CMD中的%f

方法2:使用Start-Process(适合需要控制窗口或执行方式的场景)

如果需要同步执行(等待当前文件处理完再执行下一个),可以添加-Wait和-NoNewWindow参数:

Get-ChildItem -Filter *.mp4 -File | ForEach-Object {
    Start-Process -FilePath "C:\Program Files\DVR-Scan\dvr-scan.exe" `
        -ArgumentList "-i `"$($_.FullName)`" -d events/ -tc" `
        -Wait -NoNewWindow
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:30:55