bat执行java程序 good
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