cd ../../jobs
set CLASSPATH=.;../xyz.jar;../mysql-connector-java-5.1.6-bin.jar
java folser.folder1 ../Files/MySQL.xml
cd ..
我需要从任何目录运行批处理文件。我已经设置了java的路径。有人能帮助我吗?
答案 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