bat执行java程序 good

start.bat

set MY_HOME=%~dp0 
set JMS_BINDING_PATH=%MY_HOME%..inds
set JAVA_HOME=C:Program FilesJavajdk1.5.0_08

set path=%path%;%JAVA_HOME%bin;
set CLASSPATH=.;%JAVA_HOME%lib ools.jar;%JAVA_HOME%libdt.jar;%MY_HOME%..omc-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%injava -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 FilesMyEclipse 6.5jrein"
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 .inres
echo 创建资源文件夹
mkdir .inres
echo 复制资源文件
copy /y src
es binres
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:qqa.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   





原文地址:https://www.cnblogs.com/softidea/p/3380525.html