純粋なバッチ:
for /f "delims==," %%A in ("%input:*test/time (ms)=%) do echo %%A
IN 句内の検索と置換では、最初に出現test/time (ms)
する文字列が検索され、元の文字列の先頭から検索文字列の末尾まで何も置換されません。FOR /F は、=
との区切り文字を使用して 100 を解析し,
ます。
の値内に引用符が含まれている%input%
と、IN() 句が奇妙に見え、終了引用符が表示されません。
展開を遅らせると見栄えが良くなります。
setlocal enableDelayedExpansion
for /f "delims==," %%A in ("!input:*test/time (ms)=!") do echo %%A
私は、変数の値を引用符で囲み、必要に応じて明示的にコードに追加することを好みます。これにより、通常の展開バージョンがより自然に見えます (遅延展開バージョンは同じままです)。
set "input=test/ing=123, hello/world=321, test/time (ms)=100, test/status=0"
for /f "delims==," %%A in ("%input:*test/time (ms)=%") do echo %%A
JScript を使用したバッチ処理
私のハイブリッド JScript/バッチ REPL.BAT ユーティリティがある場合は、正規表現を使用して解析を非常に具体的にすることができます。
call repl ".*test/time \(ms\)=(.*?),.*" $1 sa input
変数の値を取得するには:
set "val="
for /f "delims=" %%A in ('repl ".*test/time \(ms\)=(.*?),.*" $1 sa input') do set "val=%%A"
IN() 句内では CALL は必要ないことに注意してください。パイプを使用する場合も必要ありません。