Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
Batch file ffmpeg就地转换文件_Batch File_Ffmpeg - Fatal编程技术网

Batch file ffmpeg就地转换文件

Batch file ffmpeg就地转换文件,batch-file,ffmpeg,Batch File,Ffmpeg,我每天使用ffmpeg将多个视频文件转换为各种其他格式。正因为如此,我不能到处移动ffmpeg和多个批处理文件 我有一个文件夹C:\ffmpeg,其中包含ffmpeg.exe和所有不同格式的批处理文件转换器。然后,我在桌面上有一个指向批处理文件的快捷方式,可以将视频文件拖放到该文件上进行转换 目前,我使用它来就地转换视频文件 FOR %%A IN (%*) DO ( "%~dp0\ffmpeg.exe" -i %%A -c:v libx264 -crf 22 -c:a aac %%A_Conve

我每天使用ffmpeg将多个视频文件转换为各种其他格式。正因为如此,我不能到处移动ffmpeg和多个批处理文件

我有一个文件夹
C:\ffmpeg
,其中包含
ffmpeg.exe
和所有不同格式的批处理文件转换器。然后,我在桌面上有一个指向批处理文件的快捷方式,可以将视频文件拖放到该文件上进行转换

目前,我使用它来就地转换视频文件

FOR %%A IN (%*) DO (
"%~dp0\ffmpeg.exe" -i %%A -c:v libx264 -crf 22 -c:a aac %%A_Converted.mp4
)
从文件夹
C:\Users\User\Documents\folder
拖放视频文件
example.avi
,会导致文件
example.avi\u Converted.mp4
在相同位置创建(完美!)

我想从新文件名中删除原始文件类型,
.avi
,因此输出文件是
example\u Converted.mp4
。我可以使用如下代码示例中所示的
~n
来实现这一点,尽管新文件随后会在
C:\ffmpeg
中创建,而不是在
C:\Users\User\Documents\Folder
中创建

FOR %%A IN (%*) DO (
"%~dp0\ffmpeg.exe" -i %%A -c:v libx264 -crf 22 -c:a aac "%%~nA_Converted.mp4"
)

有没有办法使输出文件与输入文件在同一位置创建?

尝试使用
“%%~dpnA\u Converted.mp4”
@MCND这很完美,谢谢!我尝试了
%~dp0\%~nA_Converted.mp4
,它是正确的,但不起作用……你应该使用
-I%%A
而不是
-I%%A”
dpn
是修饰符或变量
%~dp0
是批处理文件的驱动器和路径(变量为
%0
),而
%~dpnA
是正在迭代的文件的驱动器、路径和文件名(
%%A
)。从技术上讲,您应该将
“%~dp0\ffmpeg.exe”
更改为
“%~dp0ffmpeg.exe”
因为
%~dp0
后面已经有一个反斜杠。