在 ffmpeg 循环命令中获取关键字错误后缺少打开'('



如何在Windows 10 powershell for ffmpeg的Linux中运行此命令?

for file in D:input*.mkv; do ffmpeg -i "$file" -map 0:v:0 -map 0:a:0 -map 0:a:1 -map 0:s:0 -map 0:s:1 -c:v copy -c:a flac -c:s copy D:output; done

我试过

for file in D:input*.mkv; do ./ffmpeg -i "$file" -map 0:v:0 -map 0:a:0 -map 0:a:1 -map 0:s:0 -map 0:s:1 -c:v copy -c:a flac -c:s copy D:output; done

但我得到了这个错误:

At line:1 char:4
+ for file in D:input*.mkv; do ./ffmpeg -i "$fil ...
+    ~
Missing opening '(' after keyword 'for'.
At line:1 char:52
+ for file in D:input*.mkv; do ./ffmpeg -i "$fil ...
+                                                    ~
Missing statement body in do loop.
+ CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingOpenParenthesisAfterKeyword

那么,如何更改此命令以在Windows 10 powershell中正常运行呢?

如错误所示,PowerShell无法识别bashfor循环语法。

在PowerShell中,您可以执行以下操作:

Get-ChildItem -Path D:input -Filter *.mkv |ForEach-Object {
./ffmpeg -i $_.FullName -map 0:v:0 -map 0:a:0 -map 0:a:1 -map 0:s:0 -map 0:s:1 -c:v copy -c:a flac -c:s copy D:output
}

使用"vs 2022的开发者命令提示符"而不是powershell(在windows终端中(。

最新更新