昨日ffmpegで一括変換をしましたが、どうもファイル名にスペースを含むとファイル名が正しくなくて変換ができませんでした


少し編集して対応させました
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
cd /d %~dp0 | |
setlocal enabledelayedexpansion | |
rem ||行末のスペース削除 | |
rem ———————– | |
set FFMPEG=ffmpeg.exe -y -i | |
set FFMPEGOUT=-acodec copy | |
rem ———————– | |
rem ||「.mp4」のファイルを取得(スペースありも可) | |
for /f "usebackq delims=" %%i in (`dir /B /S *.mp4`) do ( | |
echo —————————————————- | |
echo %%i | |
echo. | |
rem ||変数に一旦格納 | |
set dmpppp=%%i | |
rem ||ffmpegで抽出 上部変数初期化時点でのスペースをこちらに移動 | |
%FFMPEG% "%%i" %FFMPEGOUT% "!dmpppp:~0,-3!m4a" | |
echo —————————————————- | |
) | |
echo. | |
rem pause>NUL | |
pause | |
exit /b 0 |
forでdirコマンドの結果を変数に格納する時に、スペースで区切ってしまうため「delims=」で区切り文字を無効にしているため、スペースで区切られたファイル名を取得できます(使っていない文字でもいいかもしれません)
ですが、ffmpegでそのまま渡すと同じようにファイルとして見られないのでダブルクォーテーションで囲みました
出力ファイルも同様にダブルクォーテーションで囲っています
この通り、ファイル名にスペースが入っていても大丈夫になりました!
すべて抽出し直ししたかったので全.m4a削除バッチも作ってみました
まぁ
del *.m4a
でもできちゃうのと一部のファイルが削除できなかったのであまり意味ないように見えたりして…
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
cd /d %~dp0 | |
setlocal enabledelayedexpansion | |
for /f "usebackq delims=" %%i in (`dir /B /S *.m4a`) do ( | |
echo —————————————————- | |
echo %%i | |
echo. | |
del %%i | |
echo —————————————————- | |
) | |
echo. | |
pause | |
exit /b 0 |
参考:
コメント