【问题标题】:Create Concatenate Text File Using Windows Powershell (FFmpeg)使用 Windows Powershell (FFmpeg) 创建连接文本文件
【发布时间】:2018-10-19 01:12:10
【问题描述】:

我正在尝试使用 Windows Powershell 创建一个文件列表,用于在 FFmpeg 中进行连接,基本上只是列出给定目录中的所有 avi 文件,但格式正确。

目前这是我所拥有的:

Get-ChildItem -Recurse -Include *.avi | Format-Table name -hidetableheaders | Out-File 'concat.txt'

给我一​​个列表,但它的格式不正确。顶行是空白的(不确定这是否重要),它只是文件名,例如:

[BLANK]
video001.avi
video002.avi
video003.avi
video004.avi

我希望它看起来像这样:

file 'video001.avi'
file 'video002.avi'
file 'video003.avi'
file 'video004.avi'

我知道如何在 CMD 中执行此操作,但在 powershell 中无法弄清楚,这只是我完整命令的一部分,但其余部分正常运行且与问题无关。试图坚持使用 powershell,因为我在 NAS 上使用文件并且将网络驱动器与 CMD 结合使用可能会很烦人。

【问题讨论】:

  • 作为提示。格式主要仅用于命令行输出。永远不要格式化你想使用的东西。
  • 感谢您的提示。

标签: powershell ffmpeg concatenation


【解决方案1】:

如果您的目标是获得与您的示例相对应的字符串列表:

Get-ChildItem -Filter *.avi -Recurse | ForEach-Object {
    "file '$PSItem'"
} | Out-File -FilePath "$pwd\concat.txt"

Format-Table 旨在为控制台输出格式化对象。文件输出?没那么多。

【讨论】:

  • 感谢您的回复,我收到一个错误:“ForEach-Object : 无法绑定参数 'RemainingScripts'。无法将 'System.String' 类型的 'Out-File' 值转换为输入“System.Management.Automation.ScriptBlock”。
  • gci -filter *.avi -recurse | foreach {"file '" + $_.name + "'"} > concat.txt
  • @Nimble 查看更新。我的原始答案中有错字
  • @Robert Cotterman 没有。 FileInfo 对象的 ToString 方法已经简化为 Name 属性
  • @Nimble 当然 - 只需改用$($PSItem.FullName)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
  • 2019-01-04
  • 2017-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多