For loop 如何在批处理文件中执行此CMD脚本?
我正在尝试创建一个批处理文件,当执行时,该批处理文件将在文件夹中创建一个名为VideosToJoin.txt的文件列表,扩展名为.mp4、.mts和.avi,然后继续对这些文件进行压缩,创建最后一个名为FinalVideo.mp4的文件 我需要一些帮助,因为我想自动化一个特定的过程For loop 如何在批处理文件中执行此CMD脚本?,for-loop,batch-file,ffmpeg,For Loop,Batch File,Ffmpeg,我正在尝试创建一个批处理文件,当执行时,该批处理文件将在文件夹中创建一个名为VideosToJoin.txt的文件列表,扩展名为.mp4、.mts和.avi,然后继续对这些文件进行压缩,创建最后一个名为FinalVideo.mp4的文件 我需要一些帮助,因为我想自动化一个特定的过程 (for %i in (*.mp4,*.mts,*.avi) do @echo file '%i') > VideosToJoin.txt ffmpeg -f concat -i VideosToJoi
(for %i in (*.mp4,*.mts,*.avi) do @echo file '%i') > VideosToJoin.txt
ffmpeg -f concat -i VideosToJoin.txt -c copy FinalVideo.mp4
预期的结果是只执行一个文件即可获得最终视频,这就是我想要的,请提供帮助。您可以使用powershell执行此操作:
Get-ChildItem“*.mp4”、“*.mts”、“*.avi”|%{$\.Name}| Set-Content-VideosToJoin.txt
您可以使用powershell执行此操作:
Get-ChildItem“*.mp4”、“*.mts”、“*.avi”|%{$\.Name}| Set-Content-VideosToJoin.txt
CMD脚本要求您将FOR循环上的百分号加倍
此外,您还需要指定希望脚本检查的目录,因为否则它将只检查当前目录,该目录通常是用户的主目录,但实际上可能是任意目录,具体取决于其他因素
我猜想您希望将该文件输出到脚本将检查的同一文件夹中,以便进行更多检查,我们将使用%dp0变量将临时视频文件存储到脚本所在的目录中<代码>%0引用脚本本身,~dp
告诉它返回脚本的驱动器和路径
还要确保FFMpeg在您的路径中,或者在脚本中指定它的完整路径
SET "_SrcPath=C:\Some\Folder\Path"
DEL /F /Q "%~dp0VideosToJoin.txt" 2>NUL
For %%i in (
"%_SrcPath%\*.mp4"
"%_SrcPath%\*.mts"
"%_SrcPath%\*.avi"
) do (
echo file '%%i'
)>>"%~dp0VideosToJoin.txt"
ffmpeg -f concat -i "%~dp0VideosToJoin.txt" -c copy "%_SrcPath%\FinalVideo.mp4"
CMD脚本要求将FOR循环上的百分号加倍 此外,您还需要指定希望脚本检查的目录,因为否则它将只检查当前目录,该目录通常是用户的主目录,但实际上可能是任意目录,具体取决于其他因素 我猜想您希望将该文件输出到脚本将检查的同一文件夹中,以便进行更多检查,我们将使用%dp0变量将临时视频文件存储到脚本所在的目录中<代码>%0引用脚本本身,
~dp
告诉它返回脚本的驱动器和路径
还要确保FFMpeg在您的路径中,或者在脚本中指定它的完整路径
SET "_SrcPath=C:\Some\Folder\Path"
DEL /F /Q "%~dp0VideosToJoin.txt" 2>NUL
For %%i in (
"%_SrcPath%\*.mp4"
"%_SrcPath%\*.mts"
"%_SrcPath%\*.avi"
) do (
echo file '%%i'
)>>"%~dp0VideosToJoin.txt"
ffmpeg -f concat -i "%~dp0VideosToJoin.txt" -c copy "%_SrcPath%\FinalVideo.mp4"
您是否阅读了有关/?的
帮助?它说在批处理文件中使用%%i
而不是%i
…您使用powershell
标记有什么原因吗?您的代码纯粹是BAT/CMD。。。[皱眉]您是否阅读了有关/?的帮助?它说在批处理文件中使用%%i
而不是%i
…您使用powershell
标记有什么原因吗?您的代码纯粹是BAT/CMD。。。[皱眉]