我正在尝试通过翻译我为使用 FFmpeg 转换视频而制作的旧批处理脚本来学习 PowerShell。
我相信,这几乎与手头的问题无关。
这是给我带来麻烦的代码片段:
[string]$FileList = (Get-Clipboard).Split("`n")
[int]$Counter = 0
$List = @(ForEach ($i in $FileList)
{
[PSCustomObject]
@{
VideoHeight = (ffprobe.exe -v error -select_streams v:0 -show_entries stream=height -of csv=s=x:p=0 "$i")
VideoDuration = (ffprobe.exe -v error -select_streams v:0 -show_entries stream=duration -of csv=s=x:p=0 "$i")
}
$Counter++
})
存储在$FileList
剪贴板中的文件列表中,由新行分隔。
存储在$Counter
整数0
中。
对于 中的每个项目$FileList
,创建一个包含项目高度和持续时间的新对象,并将 1 添加到$Counter
。
看起来直截了当,对吧?这里有一个问题:如果只有一个高度为 1080 in 的文件$FileList
,$List.VideoHeight[0]
将只返回,1
但如果 至少有两个文件$FileList
,$List.VideoHeight[0]
将返回1080
。
命令行输出:
Single File
$List.VideoHeight:
1080
$List.VideoHeight[0]:
1
Multiple Files
$List.VideoHeight:
1080
1080
720
$List.VideoHeight[0]:
1080
有什么想法吗?我被困住了。