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

问题描述:

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

我需要从任何目录运行批处理文件。我已经为java设置了路径。有谁能够帮助我?如何从任何文件夹运行批处理文件

+0

这是Windows或Linux?你在cd命令中使用“/”表示Linux,但你谈论批处理文件而不是shell脚本。 – paxdiablo 2009-03-03 05:11:21

你的信息有点乱码,我假设你说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 .. 
+0

这不回答海报的问题 – vladr 2009-03-03 05:02:39

+0

你需要“-cp”吗?我虽然Java从CLASSPATH中自动获取它(尽管您可能需要导出而不是仅仅设置)。 – paxdiablo 2009-03-03 05:12:11

使用%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