0

ahk のコマンドライン引数を介してオーディオ エクストラクタ スクリプトを動作させる方法がわかりません。コマンドライン引数が正しいことはわかっています。バッチファイルを使用して動作させることができるためですが、以下のエラーが引き続き発生します。おそらく構文的に何か間違っていると思いますが、何がわかりません。
助けていただければ幸いです。ありがとう。

エラー: 次の変数名には無効な文字が含まれています" channels=2,samplerate=44100}:standard{access="file",mux=dummy,dst="%A_LoopF​​ield%.mp3"}

コード:

fileselectfile, File_Name, M3
SplitPath, File_Name, name
Loop, parse, name, `n
 if a_index = 2
       {
        msgbox, %A_LoopField%
        Run, "C:\Program Files\VideoLAN\VLC\vlc.exe" "-I dummy -v %File_Name% :sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}:standard{access="file",mux=dummy,dst="%A_LoopField%.mp3"}"
 }

私が話していたオーディオ抽出機能に興味がある場合は、元のバッチ コードを次に示します。

@ECHO OFF
REM Loop through files (Recurse subfolders)
REM Syntax
REM      FOR /R [[drive:]path] %%parameter IN (set) DO command
REM
REM Key
REM    drive:path  : The folder tree where the files are located.
REM
REM    set         : A set of one or more files. Wildcards must be used.
REM                  If (set) is a period character (.) then FOR will
REM                  loop through every folder.
REM
REM   command     : The command(s) to carry out, including any
REM                 command-line parameters.
REM
REM    %%parameter : A replaceable parameter:
REM                  in a batch file use %%G (on the command line %G)
FOR /R %%G IN (*.mp3) DO (CALL :SUB_VLC "%%G")
FOR /R %%G IN (*.mp3.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%

 ECHO Transcoding %1
 REM Here's where the actual transcoding/conversion happens. The next line
 REM fires off a command to VLC.exe with the relevant arguments:
 CALL "C:\Program Files\VideoLAN\VLC\vlc" -I dummy -v %1 :sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}:standard{access="file",mux=dummy,dst="%_commanm%.mp3"} vlc://quit
 REM Having no SLEEP-esque command, we have to trick DOS/Windows into pausing
 REM for a bit between encode ops - To give the host OS a chance to do what it
 REM needs to - Via clever use of the PING utility:
 REM (Thanks to http://www.computing.net/answers/programming/dos-command-for-wait-5-seconds/11192.html for the tip! :-)
 PING -n 1 -w 10000 1.1.1.1 > NUL
GOTO :eof

:SUB_RENAME
 SET _origfnm=%1
 SET _endbit=%_origfnm:*.mp3=%
 CALL SET _newfilenm=%%_origfnm:.mp3%_endbit%=.mp3%%
 SET _newfilenm=%_newfilenm:_COMMA_=,%
 COPY %1 %_newfilenm%

GOTO :eof

:eof
REM My own little addition to prevent the batch window from "vanishing" without
REM trace at the end of execution, as if a critical error had occurred.
PAUSE
4

2 に答える 2

0

なしで試しましたSplitPath, File_Name, nameか?私はこのようなエラーを取り除きましたが、それが最終的にあなたが望む結果を生み出すかどうかはわかりません。

于 2012-09-04T11:17:39.180 に答える
0

私は答えを見つけました。自分で修正する知識がなかっただけで、構文エラーを犯していました。新しい RUN ステートメントは完全に機能します。

これが新しく修正されたスクリプトです

fileselectfile, File_Name, M3
SplitPath, File_Name, name, dir, ext, name_no_ext, drive

    StringReplace, File_Name, File_Name,`n, \

Loop, parse, name, `n
 {if a_index = 2
        msgbox, %A_LoopField%
        Run % "C:\Program Files\VideoLAN\VLC\vlc.exe -I dummy -v """ File_Name """ :sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}:standard{access=""file"",mux=dummy,dst=""" A_LoopField ".mp3""} "

}
于 2012-09-05T01:13:27.507 に答える