Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For loop 如何在批处理文件中执行此CMD脚本?_For Loop_Batch File_Ffmpeg - Fatal编程技术网

For loop 如何在批处理文件中执行此CMD脚本?

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

我正在尝试创建一个批处理文件,当执行时,该批处理文件将在文件夹中创建一个名为VideosToJoin.txt的文件列表,扩展名为.mp4、.mts和.avi,然后继续对这些文件进行压缩,创建最后一个名为FinalVideo.mp4的文件 我需要一些帮助,因为我想自动化一个特定的过程

(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。。。[皱眉]