gpt4 book ai didi

batch-file - 带有空格和'的ffmpeg目录

转载 作者:行者123 更新时间:2023-12-04 22:59:38 29 4
gpt4 key购买 nike

我想使用 FFMEG 合并目录 E:\Videos\Ryan's Videos\1.mp4 和 2.mp4 中的两个视频文件
我的批处理脚本是:

(for %%i in (%*) do @echo file '%%~i') > mylist.txt
C:\ffmpeg\bin\ffmpeg.exe -f concat -safe 0 -i "%cd%\mylist.txt" -c copy "%cd%\output.mp4"
pause

这会产生 mylist.txt:
file 'E:\Videos\Ryan's Videos\2.mp4'
file 'E:\Videos\Ryan's Videos\1.mp4'

它尝试读取但返回错误
[concat @ 00000000026224a0] Impossible to open 'E:\Videos\Ryans'
E:\Videos\Ryan's Videos\mylist.txt: No such file or directory

从文本文件读取时,它似乎在目录中的 ' 上跳闸,我尝试使用“”而不是 '' 包含路径,但它不能解决问题。

最佳答案

哇 - ffmpeg 有 unusual quote/escape rules .

我不确定如何解释规则,但我认为一种选择是放弃引号,然后您需要转义 \\\'\'

file E:\\Videos\\Ryan\'s Videos\\2.mp4

以下批处理脚本应为您提供该结果
@echo off
setlocal disableDelayedExpansion
>mylist.txt (
for %%F in (%*) do (
set "file=%%~F"
setlocal enableDelayedExpansion
set "file=!file:\=\\!"
set "file=!file:'='\!"
echo file !file!
endlocal
)
)
C:\ffmpeg\bin\ffmpeg.exe -f concat -safe 0 -i "%cd%\mylist.txt" -c copy "%cd%\output.mp4"
pause

我设置了 file关闭延迟扩展的变量,然后在循环中打开和关闭延迟扩展,以保护任何 !可能在文件路径中。

我保留了您的 ffmpeg 命令,但我很确定 ffmpeg 默认为当前目录,在这种情况下,该行可以简化为
C:\ffmpeg\bin\ffmpeg.exe -f concat -safe 0 -i mylist.txt -c copy output.mp4

我更有信心的另一个选择是保留外部引号,但是必须关闭引号,转义撇号,然后恢复引号,如下所示:
file 'E:\Videos\Ryan'\''s Videos\2.mp4'

以下批处理脚本应给出上述结果:
@echo off
setlocal disableDelayedExpansion
>mylist.txt (
for %%F in (%*) do (
set "file=%%~F"
setlocal enableDelayedExpansion
set "file=!file:'='\''!"
echo file '!file!'
endlocal
)
)
C:\ffmpeg\bin\ffmpeg.exe -f concat -safe 0 -i "%cd%\mylist.txt" -c copy "%cd%\output.mp4"
pause

关于batch-file - 带有空格和'的ffmpeg目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49398311/

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