我有接近0的编程经验,但想知道如何做到这一点,并试图找出如何做一段时间。我非常沮丧 - 希望我能理解它。我试图将一堆MP4文件转换为MP3文件。我想保留原始文件,只是吐出一堆与原始文件同名的MP3文件。
从这里开始:https://wiki.videolan.org/How_to_Batch_Encode/
显然,您需要做的就是在命令提示符中使用此代码。我之前从未真正使用过Command-Prompt,所以不知道该怎么做。
FOR /R %%G IN (*.m4a) DO (CALL :SUB_VLC "%%G")
FOR /R %%G IN (*.m4a.mp*) DO (CALL :SUB_RENAME "%%G")
GOTO :eof
:SUB_VLC
SET _firstbit=%1
SET _qt="
CALL SET _newnm=%%_firstbit:%_qt%=%%
SET _commanm=%_newnm:,=_COMMA_%
REM echo %_commanm%
CALL "C:\Program Files\VideoLAN\VLC\vlc" -I dummy -vvv %1 --sout=#transcode{acodec="mpga",ab="512","channels=2",samplerate="44100"}:standard{access="file",mux="mpeg1",dst="%_commanm%.mp3"} vlc://quit
GOTO :eof
:SUB_RENAME
SET _origfnm=%1
SET _endbit=%_origfnm:*.m4a=%
CALL SET _newfilenm=%%_origfnm:.m4a%_endbit%=.mp3%%
SET _newfilenm=%_newfilenm:_COMMA_=,%
COPY %1 %_newfilenm%
DEL %1
GOTO :eof
:eof
我还需要做什么?所有%%在代码中的含义是什么?
非常感谢你!
答案 0 :(得分:5)
%%是变量。 我使用该示例的问题是我的文件名包含空格,因此有必要将%% a包装在引号中。
以下适用于我:
for %%a in (*.mp4) do "C:\Program Files (x86)\VideoLAN\VLC\vlc" -I dummy "%%a" --sout=#transcode{acodec=mp3,ab=128,vcodec=dummy}:std{access="file",mux="raw",dst="%%a.mp3"} vlc://quit