如何从任何文件夹运行批处理文件
问题描述:
cd ../../jobs
set CLASSPATH=.;../xyz.jar;../mysql-connector-java-5.1.6-bin.jar
java folser.folder1 ../Files/MySQL.xml
cd ..
我需要从任何目录运行批处理文件。我已经为java设置了路径。有谁能够帮助我?如何从任何文件夹运行批处理文件
答
你的信息有点乱码,我假设你说java正在路径上,但是你无法从批处理文件正常运行你的应用程序。它看起来像缺少java的类路径选项(-cp)。试试这个:
cd ../../jobs set CLASSPATH=.;../xyz.jar;../mysql-connector-java-5.1.6-bin.jar java -cp %CLASSPATH% folser.folder1 ../Files/MySQL.xml cd ..
答
使用%CD%来获取当前目录(即该批处理文件住在一个)
例如
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
+0
%cd%不是批处理文件的目录,而是当前目录,例如我在C:\中,我调用C:\ test \ batch.bat; %cd%是C:\,而不是C:\ test。 – vladr 2009-03-03 05:04:04
答
在* 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 /等:
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
答
虽然我不能在弗拉德的答案评论(评论需要更多的积分比答案?!)我会永远警惕的依靠:
CD /d %~dp0
因为Windows无法将光盘映射到UNC路径,并且存在将您置于%windir%而非潜在灾难性结果的恶劣习惯。
相反,尽管它更加冗长,但每次需要完整路径时,通常最好引用%〜dp0(或包含该值的变量)。
BAD:
cd /d %~dp0
rd temp
GOOD:
rd %~dp0\temp
这是Windows或Linux?你在cd命令中使用“/”表示Linux,但你谈论批处理文件而不是shell脚本。 – paxdiablo 2009-03-03 05:11:21