2017-04-01 11 views
0

MediaInfo用のこのコマンドラインツールは、ビデオファイル情報の印刷に使用します。例えば。Windows CLIは空白で正しい変数を表示しません

mediainfo --Inform=General;%Duration/String2% video.mkv 
46 min 57 s 

あなたはそれが正しい46 min 57 sを印刷します見ることができるように:私は、ビデオファイルのデュレーション値を取得したいです。

ここで、その値を変数に入れたいとしましょう。あなたはそれが新しい行にset duration=%46与え見ることができるように

for /f "usebackq" %a in (`"mediainfo --Inform=General;%%Duration/String2%% video.mkv"`) do set duration=%a 
set duration=%46 

:だから我々はこれを実行しますか?私が次に入力した場合%duration%私は得る:

'%46' is not recognized as an internal or external command, 
operable program or batch file. 

何が起こっているのですか? %duration%変数の表示を46 min 57 sにするにはどうすればよいですか?

答えて

1
for /f "usebackqDELIMS=" %%a 

デフォルトの区切り文字にはスペースが含まれます。この構文はデリミタを無効にして、行全体が割り当てられるようにします。

metavariable aには、この行を含むバッチファイルを実行している場合は、2 %が必要です。プロンプトから実行している場合は、%aが必要です。これは割り当て命令にも当てはまります。

あなたは%46 malarkeyで何をしようとしているのか分かりません。説明してください。バッチファイルで

+0

"usebackqDELIMS ="が正しく動作し、正しい値がスペースで表示されます。 – user3108268

1

:CMDで

@echo off 
for /f "tokens=*" %%a in ('mediainfo --Inform=General;%Duration/String2% video.mkv') do set duration=%%a 
echo %duration% 
pause 

for /f "tokens=*" %a in ('mediainfo --Inform=General;%Duration/String2% video.mkv') do set duration=%a 
echo %duration% 

出力:

46分57秒

+0

CMDでは、すべての情報と値を%duration%に設定し、echo%duration%で印刷されたリストの最後の項目である「強制:いいえ」を指定して、壁全体を印刷します。 – user3108268