bat执行java程序 good

简介:   start.bat set MY_HOME=%~dp0  set JMS_BINDING_PATH=%MY_HOME%..\binds set JAVA_HOME=C:\Program Files\Java\jdk1.

 

start.bat

set MY_HOME=%~dp0 
set JMS_BINDING_PATH=%MY_HOME%..\binds
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_08\

set path=%path%;%JAVA_HOME%bin;
set CLASSPATH=.;%JAVA_HOME%lib\tools.jar;%JAVA_HOME%lib\dt.jar;%MY_HOME%..\bomc-sa-tdagent.jar;%MY_HOME%..\commonlib\*; 
java -Xms128M -Xmx512M  -Dprogram.name=bomc-sa-tdtpagent -Dfile.encoding=GBK -Duser.timezone=GMT+8 -jar ../test.jar agent>td.log

 

 

set CP=./;lib/ant.jar;lib/commons-logging-1.0.4.jar  
%JAVA_HOME%\bin\java -Xms128m -Xmx256m -Dfile.encoding=GB18030 -classpath %CP% com.xxx.xxxx.HelloWorld [args]
pause

CP中是程序需要的jar包 [args]是main函数需要的参数

 

set MY_HOME=%~dp0
set CLASSPATH=%MY_HOME%xxx.jar;%MY_HOME%..\lib\*;
set PATH="D:\Program Files\MyEclipse 6.5\jre\bin"
set JAVA_OPTS=-Xms128m -Xmx256m
java %JAVA_OPTS% com.java.Test


http://huangzhir.iteye.com/blog/1883209


compileAndRun.bat:

@echo off
cd /d %~dp0
echo 当前路径:%cd%
echo 编译中
javac -encoding utf-8 -d ./bin/ ./src/org/ubird/*.java
echo 清理资源文件
rmdir /S /Q .\bin\res
echo 创建资源文件夹
mkdir .\bin\res
echo 复制资源文件
copy /y src\res\ bin\res
echo 切换执行路径:
cd bin
echo %cd%
echo 开始运行
java org.ubird.TestSwingWorker
pause

 

补充(DOS相关):

a.bat内容为
cd /d %~dp0
在这里
    cd /d %~dp0的意思就是cd /d d:\qq
    %0代表批处理本身 d:\qq\a.bat
    ~dp是变量扩充
    d既是扩充到分区号 d:
    p就是扩充到路径 \qq
    dp就是扩充到分区号路径 d:\qq
扩充变量语法详解:
    :: ~I - 删除任何引号("),扩充 %I
    :: %~fI - 将 %I 扩充到一个完全合格的路径名
    :: %~dI - 仅将 %I 扩充到一个驱动器号
    :: %~pI - 仅将 %I 扩充到一个路径
    :: %~nI - 仅将 %I 扩充到一个文件名
    :: %~xI - 仅将 %I 扩充到一个文件扩展名
    :: %~sI - 扩充的路径只含有短名
    :: %~aI - 将 %I 扩充到文件的文件属性
    :: %~tI - 将 %I 扩充到文件的日期/时间
    :: %~zI - 将 %I 扩充到文件的大小
    :: %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串
    :: 可以组合修饰符来得到多重结果:
    :: %~dpI - 仅将 %I 扩充到一个驱动器号和路径
    :: %~nxI - 仅将 %I 扩充到一个文件名和扩展名
    :: %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名
    :: %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充
    :: 到找到的第一个驱动器号和路径。
    :: %~ftzaI - 将 %I 扩充到类似输出线路的 DIR

%~dp0 VS %cd%
    %cd% is available either to a batch file or at the command prompt and expands to the drive letter and path of the current directory (which can change e.g. by using the CD command)
    %~dp0 is only available within a batch file and expands to the drive letter and path in which that batch file is located (which cannot change). It is obtained from %0 which is the batch file's name.

使用范围:
%cd%:批处理脚本(bat脚本)、命令行窗口
%~dp0:批处理脚本(bat脚本)

代表的值是否会变化:
%cd%:会。因为代表的是当前目录
%~dp0:不会。因为代表的是脚本文件在磁盘的位置


An experiment like the following shows the difference
Here is D:\dirshow.bat:
Code:
@echo off
echo this is %%cd%%  %cd%
echo this is %%~dp0 %~dp0
Run it from C:\ and this is what you see
Code:
C:\>D:\dirshow.bat
this is %cd%  C:\
this is %~dp0 D:\

http://www.cnblogs.com/dongzhiquan/archive/2010/09/12/1994555.html

在DOS中,有两个环境变量可以跟当前路径有关,一个是%cd%, 一个是%~dp0。

    这两个变量的用法和代表的内容是不同的。

    1. %cd% 可以用在批处理文件中,也可以用在命令行中;

执行结果:

驱动器盘符:+当前目录,

如在dos窗口中进入c:\dir目录下面,输入:echo %cd% ,

则显示为:c:\dir 。

 

   %cd%的内容是可以被改变的,其内容为命令的执行路径或批处理文件的执行路径。

    2.%~dp0只可以用在批处理文件中,它是由它所在的批处理文件的目录位置决定的,

是批处理文件所在的盘符:+路径。在执行这个批处理文件的过程中,

它展开后的内容是不可以改变的。

bat文件内容:

@echo off     
echo this is %%cd%%  %cd%     
echo this is %%~dp0 %~dp0   





 

 

 

 

相关文章
|
1月前
|
Java
java程序导出堆文件
java程序导出堆文件
|
1月前
|
SQL Oracle Java
sql文件批处理程序-java桌面应用
sql文件批处理程序-java桌面应用
25 0
|
1月前
|
存储 Java
Java:编写程序,计算两个数的和、差、积、商和余数。docx
Java:编写程序,计算两个数的和、差、积、商和余数。docx
|
1月前
|
安全 Java 数据库连接
【Java每日一题】——第四十一题:编写程序描述影视歌三栖艺人。
【Java每日一题】——第四十一题:编写程序描述影视歌三栖艺人。
31 0
|
14天前
|
Java Maven
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
35 3
|
2天前
|
Java
网页运行java程序cheerpj
网页运行java程序cheerpj
26 0
|
29天前
|
Java
elasticsearch使用java程序添加删除修改
elasticsearch使用java程序添加删除修改
9 0
|
1月前
|
Java
java程序
re是java运行时的环境,包含jvm和运行时所需要的类库 jdk是java开的程序包,包含jre和开发人员使用的工具 jvm就是我们常说的java虚拟机,他是整个java实现跨平台的最核心 的部分,所有的java程序会首先被编译为.class的类文件,这种类文 件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统 相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释 给本地系统执行。 只有jvm还不能成class的执行,因为再解释class的时候jvm需要调用 解释所需要的类库lib,而jre包含lib类库。jvm屏蔽了与具体操作系 统平台相关的信息,使得java程
17 0
|
1月前
|
存储 Java Shell
Java程序结构
Java程序结构
12 3
|
1月前
|
安全 Java 数据库连接
【Java每日一题】——第四十二题:编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
【Java每日一题】——第四十二题:编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
77 0