我正试图为一些数据解析输出文件,但在将值返回到我的Windows shell时遇到问题。
我要做的只是使用一个简单的正则表达式返回一个值,并将其存储到shell变量中。
我现在有这样的东西:
%VAL% = %PERL% -e '$tmp="Value: 1000"; if ($tmp =~ /Value:\s(\d+)/) { print $1; }'
哪里 %VAL% 我想把里面的东西还给你 $1 ,和 %PERL% 指向perl.exe的本地副本。
%VAL%
$1
%PERL%
有人能指出正确的方法吗?
编辑:它比Unix更丑:
for /f "tokens=*" %i in ('perl -e "$tmp=\"Value: 1000\"; if ($tmp =~ /Value:\s(\d+)/) { print $1; }"') do set VAL = %i
或使用 set /p 中间文件:
set /p
%PERL% -e '$tmp="Value: 1000"; if ($tmp =~ /Value:\s(\d+)/) { print $1; }' > file.txt set /p VAL = < file.txt del file.txt
从 Silly Batch File Tricks
为什么不在脚本中创建变量?看见 env_var 在win32 perl wiki上。