【转】在批处理中加载某个目录所有的jar

来源:互联网 发布:平价水乳 知乎 编辑:程序博客网 时间:2024/05/16 12:12
原文:http://www.blogjava.net/lifesting/archive/2008/04/13/192562.html
 
我平常做服务器或者应用程序的时候喜欢把各种依赖包如log4j, jdbc, commons-lang等放到一个lib目录下,然后启动的时候将这些jar包设置到classpath上。以前我经常使用set classpath=log4j.jar;jdbc.jar;commons-lang.jar硬加载,但问题就是每新加入一个jar,就得改批处理一次,再就是每开发一个就得这么设置一次。很烦人,perl 创始人说,偷懒的程序员才是好程序员:),我需要一个通用的加载方式。

不管linux/windows或其它OS,都提供一个shell与kernel交互,并且shell都有一个类似的for内置commnd。

下面是linux bash的尝试
#!/usr/bin/sh

clspath
="bootstrap.jar"
for k in *.jar
do

 clspath
=$clspath:$PWD/$k
 echo 
"current jar is $k."
done
printf "classpath is %s" $clspath

工作的很好,于是在windows同样try了一下batch
@echo off

set clspath
=bootstrap.
jar
for %%j in (*.jar) do
 (
set clspath
=%clspath%;%cd%\%%j

echo current jar is 
%%j.
)
echo classpath is 
%clspath%

很奇怪的是最后的结果却是 classpath is bootstrap.jar;D:\workflow\bingo\lib\servlet-api.jar。很显然batch默认不支持变量迭代更改
google了一下,发现原因,稍微改一下:
 
 1@echo off
 2

 3set clspath=bootstrap.
jar
 4
setlocal enabledelayedexpansion
 5for %%j in (*.jar) do
 (
 6set clspath=!clspath!;%cd%\%%j

 7echo current jar is %%j.
 8)
 9echo classpath is %clspath%

10endlocal


对比一下,可以发现:

  1. 第4行加上了setlocal enabledelayedexpansion,即变量延迟展开。
  2. 第10行有一个endlocal,结束这个设置
  3. 第6行把%classpath%变成了!classpath!。

虽然目的达到了,还是要鄙视微软的dos batch,实在很弱,不知Powershell怎样。

参考资料:
   
setlocal

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(350) | 评论(0) | 转发(0) |
0

上一篇:【转】jar参数运行应用时classpath的设置方法

下一篇:[转]java的System.getProperty()方法可以获取的值

相关热门文章
  • View与ViewGroup的概念
  • 关于ip_conntrack跟踪连接满导...
  • 我的第一个python程序之续集...
  • HTML5 音视频媒体处理相关...
  • 欢迎进攻高于所有在ChinaUnix...
  • Tomcat 6 配置SSI
  • tomcat + ssi
  • JDK1.6官方下载_JDK6官方下载_...
  • Java 判断文件夹、文件是否存...
  • 如何正确(完美)卸载Java/JDK/J...
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
0 0
原创粉丝点击