2009-03-03 88 views
2
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

回答

0

你的信息有點亂碼,我假設你說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

0

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

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 /等:

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

雖然我不能在弗拉德的答案評論(評論需要更多的積分比答案?!)我會永遠警惕的依靠:

CD /d %~dp0 

因爲Windows無法將光盤映射到UNC路徑,並且存在將您置於%windir%而非潛在災難性結果的惡劣習慣。

相反,儘管它更加冗長,但每次需要完整路徑時,通常最好引用%〜dp0(或包含該值的變量)。

BAD:

cd /d %~dp0 
rd temp 

GOOD:

rd %~dp0\temp