如何从任何文件夹运行批处理文件

时间:2009-03-03 04:49:45

标签: java batch-file

cd ../../jobs
set CLASSPATH=.;../xyz.jar;../mysql-connector-java-5.1.6-bin.jar
java folser.folder1 ../Files/MySQL.xml
cd ..

我需要从任何目录运行批处理文件。我已经设置了java的路径。有人能帮助我吗?

4 个答案:

答案 0 :(得分:3)

在* nix下(例如Linux):

cd "`dirname \"$0\"`"
# your current directoy is now the script's directory
cd ../../jobs
set CLASSPATH=.:../xyz.jar:../mysql-connector-java-5.1.6-bin.jar
java folder.folder1 ../Files/MySQL.xml
cd ..
# when the script terminates, you are automatically
#  back to the original directory

在Windows NT / XP / etc。下:

SETLOCAL
PUSHD .
REM current directory has been saved and environment is protected
CD /d %~dp0
REM your current directoy is now the script's directory
CD ..\..\jobs
SET CLASSPATH=.;..\xyz.jar;..\mysql-connector-java-5.1.6-bin.jar
java folder.folder1 ..\Files\MySQL.xml
CD ..
REM before the script terminates, you must explicitly
REM return back to the original directory
POPD
ENDLOCAL

答案 1 :(得分:1)

虽然我不能评论弗拉德的答案(评论需要更多的分数而不是答案?!)我总是要小心依赖:

CD /d %~dp0

因为Windows无法通过CD转到UNC路径,并且有一种令人讨厌的习惯,即将您放入%windir%而不是潜在的灾难性结果。

相反,虽然它更啰嗦,但每次需要完整路径时,通常最好不要引用%~dp0(或包含该值的变量)。

BAD:

cd /d %~dp0
rd temp

GOOD:

rd %~dp0\temp

答案 2 :(得分:0)

你的消息有点乱,我假设你说java在路径上,但是你无法从批处理文件中正确运行你的应用程序。看起来你缺少java的classpath选项(-cp)。试试这个:

cd ../../jobs
set CLASSPATH=.;../xyz.jar;../mysql-connector-java-5.1.6-bin.jar
java -cp %CLASSPATH% folser.folder1 ../Files/MySQL.xml
cd ..

答案 3 :(得分:0)

使用%cd%获取当前目录(即批处理文件所在的目录)

e.g。

set JAVA_HOME=%cd%\jdk1.x.x
set PATH=%JAVA_HOME%\bin;%PATH%
set CLASSPATH=%JAVA_HOME%\lib\tools.jar;%cd%\lib\myjar.jar;etc,etc

set JAVA_HOME=%cd%\jdk1.x.x set PATH=%JAVA_HOME%\bin;%PATH% set CLASSPATH=%JAVA_HOME%\lib\tools.jar;%cd%\lib\myjar.jar;etc,etc