一部のデータの出力ファイルを解析しようとしていますが、Windowsシェルに値を返す際に問題が発生しています。
私がやろうとしているのは、単純な正規表現を使用して値を返し、それをシェル変数に格納することです。
私は現在このようなものを持っています:
%VAL% = %PERL% -e "$tmp="Value: 1000"; if ($tmp =~ /Value:s(d+)/) { print $1; }"
どこで %VAL%
で見つかったものを返したい $1
、および %PERL%
perl.exeのローカルコピーを指します。
誰かがこれを行う適切な方法を指摘していただけますか?
回答:
回答№1は2編集:それはUnixより少しいです:
for /f "tokens=*" %i in ("perl -e "$tmp="Value: 1000"; if ($tmp =~ /Value:s(d+)/) { print $1; }"") do set VAL = %i
または使用する set /p
中間ファイルの場合:
%PERL% -e "$tmp="Value: 1000"; if ($tmp =~ /Value:s(d+)/) { print $1; }" > file.txt
set /p VAL = < file.txt
del file.txt
回答№2の場合は0
スクリプト内で変数を作成しないのはなぜですか? env_var win32 perl wikiで。