这是我的代码:
SET /P fname=Input File Name:
for %%f in (%fname%) do "C:\ffmpeg" -i "%%f" -aspect 720:540 -c copy "converted/%%~nf_.mp4"
此批处理文件用于将 16x9 .mp4 转换为 4x3 .mp4。我可以使用
for %%f in (*.mp4) do
,但我不想转换目录中的每个 mp4,只想转换特定的 mp4。
我遇到的问题是我不能在输入文件名中使用空格。
如何更改脚本以使其能够处理包含空格的文件名?
谢谢!
为了论证,我使用
FOR
命令发布了一个解决方案。在我看来,这是更好的解决方案,因为它删除了文件扩展名,无论长度如何。
@echo off
SET /P fname=Input File Name:
for %%f in ("%fname%") do echo "C:\ffmpeg.exe" -i "%%~f" -aspect 720:540 -c copy "converted\%%~nf_.mp4"
使用 echo off 输出执行此代码如下。
C:\BatchFiles\SO\78115464>so.bat
Input File Name:My File with spaces.mp4
"C:\ffmpeg.exe" -i "My File with spaces.mp4" -aspect 720:540 -c copy "converted\My File with spaces_.mp4"
使用 ECHO ON 执行它会显示代码的所有详细输出。
C:\BatchFiles\SO\78115464>so.bat
C:\BatchFiles\SO\78115464>SET /P fname=Input File Name:
Input File Name:My File with spaces.mp4
C:\BatchFiles\SO\78115464>for %f in ("My File with spaces.mp4") do echo "C:\ffmpeg.exe" -i "%~f" -aspect 720:540 -c copy "converted\%~nf_.mp4"
C:\BatchFiles\SO\78115464>echo "C:\ffmpeg.exe" -i "My File with spaces.mp4" -aspect 720:540 -c copy "converted\My File with spaces_.mp4"
"C:\ffmpeg.exe" -i "My File with spaces.mp4" -aspect 720:540 -c copy "converted\My File with spaces_.mp4"
如果您只是想将要转换的文件拖放到批处理文件中,您的代码可能就像这样简单。
"C:\ffmpeg.exe" -i "%~1" -aspect 720:540 -c copy "converted\%~n1_.mp4"