2011-10-07 78 views
2

我有一個屬性文件位於%ilmhome%\webapp\WEB-INF\amhome.properties使用批處理腳本來讀取屬性文件

#Tue Feb 15 19:27:14 IST 2011 
amhome.connection.password=amhome534 
amhome.connection.url=jdbc\:oracle\:thin\:@(DESCRIPTION\=(ADDRESS_LIST\=(ADDRESS\=(PROTOCOL\=TCP)(HOST\=diablo)(PORT\=1521)))(CONNECT_DATA\=(SERVER\=DEDICATED)(SERVICE_NAME\=orcl))) 
amhome.connection.maxWait=20000 
amhome.connection.username=amhome534 
amhome.connection.platformId=6 
amhome.connection.driver_class=oracle.jdbc.driver.OracleDriver 

我想獲取從amhome.properties以下的項目文件到一些變量

Username  : amhome534 
Host   : diablo 
Port   : 1521 
ServiceName : orcl 
ConnString  : jdbc\:oracle\:thin\:@(DESCRIPTION\=(ADDRESS_LIST\=(ADDRESS\=(PROTOCOL\=TCP)(HOST\=diablo)(PORT\=1521)))(CONNECT_DATA\=(SERVER\=DEDICATED)(SERVICE_NAME\=orcl))) 

我該怎麼辦那?

+1

這與DOS無關。 DOS是操作系統。批處理文件是Windows內置的腳本框架。黑色窗口是控制檯,而不是DOS窗口。 – abatishchev

+1

+1,但批處理文件及其大部分語法仍然始於MS-DOS命令處理器和CP/M之前。所以遺產在那裏,但實際上DOS上的確存在很少的實際DOS問題。 – Joey

+3

僅供參考,有一個預定義的環境變量'USERNAME',它保存活動用戶的登錄名。所以也許你應該選擇一個不同的名字來存儲你的數據。 –

回答

1

檢查出FOR /F command ...你應該可以設置DELIMS=.=TOKENS=3,*這將跳過'amhome'和'連接',但給你像'密碼'+'amhome534'值對。

+0

到目前爲止,我得到了這個''echo off setlocal FOR/F「tokens = 3,* delims =。=」%% G IN(c:\ simon \ amhome.properties)DO(set %% G = %% H ) echo%password% echo%username% endlocal'但是我怎樣獲取'Host,Port和Servicename'? – abi1964

+0

我是否正確地看到主機,端口和用戶名不是它們自己的屬性,而是需要從amhome.connection.url字符串中挖掘出來? – ewall

+1

如果是這樣,你可以使用[這些字符串操作技術](http://www.dostips.com/DtTipsStringManipulation.php)的組合,但(a)我仍然不確定最簡單的方法,並且(b )這並不容易...但它可能很有趣。 (我想有一個扭曲的樂趣,我想!) – ewall