2010-11-22 30 views
1

我試圖解析某些數據的輸出文件,並且在將值返回給我的Windows外殼時遇到問題。從單行Perl腳本檢索值

我想要做的只是使用簡單的正則表達式返回一個值,並將其存儲到我的shell變量中。

我現在有這樣的事情:

%VAL% = %PERL% -e '$tmp="Value: 1000"; if ($tmp =~ /Value:\s(\d+)/) { print $1; }' 

其中%VAL%是我想回到什麼在$1發現,並%PERL%點perl.exe所在的本地副本。

有人可以指出這樣做的正確方法嗎?

回答

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 

Silly Batch File Tricks

+0

謝謝!工作得非常好 – espais 2010-11-22 11:55:59

0

爲什麼不在腳本中創建變量?請參閱win32 perl wiki上的env_var

+1

如果變量被設置與ENV_VAR,它會僅在腳本中啓動的程序中才可見 - 但腳本結束時不會將其導出到腳本外 – cristis 2010-11-22 11:06:40

+0

不知道(並不能測試),但我認爲「出口」就像這樣做。我的錯! – Aif 2010-11-22 17:03:57