gpt4 book ai didi

powershell - 如何迭代特定模式的文件名以在 FFMPEG 和 PowerShell 上使用它

转载 作者:行者123 更新时间:2023-12-04 22:58:55 26 4
gpt4 key购买 nike

我对 PowerShell 相当缺乏经验,当我需要完全控制所需的转换时,我会在某些情况下使用它。
所以,我面临一个问题,我收集了 20 个视频。从 1300 到 1319 都共享相同的数字模式,我想使用以下命令将整个“MOV”文件集合转换为“MP4”文件:ffmpeg -i my-video-1300.mov -vcodec h264 -acodec mp2 my-video-1300.mp4
有没有办法使用正则表达式、通配符或任何名称来简单地创建单行转换命令。
我对它“应该是什么样子”的想法是:ffmpeg -i my-video-13[00-19].mov -vcodec h264 -acodec mp2 my-video-13[00-19].mp4
当然这最后一行不起作用,但我想学习正确的方法。
谢谢。

最佳答案

Get-ChildItem -Filter my-video-*.mov |
Where-Object {
if ($_.BaseName -match '-(\d+)$') {
$number = [int] $Matches[1]
$number -ge 1300 -and $number -le 1319
}
} |
ForEach-Object {
ffmpeg -i $_.FullName -vcodec h264 -acodec mp2 ($_.FullName -replace '\.mov$', '.mp4')
}
  • Get-ChildItem -Filter my-video-*.mov使用简单的通配符模式有效地预过滤候选文件。
  • Where-Object然后脚本 block 通过 regex 从基本文件名中提取数字。 (正则表达式)和 -match operator ,并检查数字是否在感兴趣的范围内。
  • 输出 $true来自脚本 block (隐含地来自 bool 范围检查表达式,$number -ge ...)导致手头的文件被包含并传递到管道中。
  • 请注意,不产生输出被隐式解释为 $false , 基于 PowerShell's too-Boolean conversion logic .
  • ForEach-Object然后仅对感兴趣的文件执行脚本 block 。
  • ($_.FullName -replace '\.mov$', '.mp4')通过替换 .mov 从输入文件名派生输出文件名扩展名 .mp4 ,使用正则表达式和 -replace operator .
  • 关于powershell - 如何迭代特定模式的文件名以在 FFMPEG 和 PowerShell 上使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59054217/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com