2011-10-07 80 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