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

PowerShell优化:单份ffmpeg crop脚本批量调用并传递MP4变量

优化后的PowerShell脚本实现方案

修改思路

  • 将ffmpeg crop.ps1统一存放至C:\Videos根目录,消除多份脚本的维护成本
  • 直接递归遍历所有子文件夹中的MP4文件,为每个文件启动根目录的裁剪脚本
  • 通过命令行参数向裁剪脚本传递当前MP4的完整路径和文件名

最终脚本代码

$rootDir = "C:\Videos"
$cropScript = Join-Path $rootDir "ffmpeg crop.ps1"

# 递归查找所有子文件夹中的MP4文件
Get-ChildItem -Path $rootDir -Recurse -Filter "*.mp4" | ForEach-Object {
    $mp4 = $_
    try {
        # 启动根目录的裁剪脚本,传递MP4的完整路径和文件名参数
        Start-Process -WorkingDirectory $mp4.DirectoryName powershell.exe @"
-NoExit -File "$cropScript" -VideoFullPath "$($mp4.FullName)" -VideoName "$($mp4.Name)"
"@
    }
    catch {
        Write-Host -NoNewline -ForegroundColor Red "无法处理文件: "
        Write-Host -NoNewline -ForegroundColor White "$($mp4.Name)`n"
        Write-Host -NoNewline -ForegroundColor White "错误信息: "
        Write-Host -ForegroundColor Red "$($_.Exception.Message)`n"
    }
}

裁剪脚本参数接收配置

在C:\Videos\ffmpeg crop.ps1开头添加参数定义,用于接收传递的变量:

param(
    [Parameter(Mandatory=$true)]
    [string]$VideoFullPath,
    [Parameter(Mandatory=$true)]
    [string]$VideoName
)

# 后续裁剪逻辑可直接使用 $VideoFullPath 和 $VideoName 变量处理视频
# 示例:Write-Host "正在处理视频: $VideoName,路径: $VideoFullPath"

关键说明

  1. 路径统一:$cropScript固定指向根目录的脚本,无需再维护多份副本
  2. 参数传递:使用Here-String(@" ... "@)避免复杂的引号转义,确保参数正确传递
  3. 工作目录:保持原逻辑,将进程工作目录设为MP4所在文件夹,适配裁剪脚本的相对路径依赖
  4. 错误处理:调整错误输出,明确显示出错的MP4文件名,便于排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:05:17