2009-03-03 17 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が示されますが、シェルスクリプトではなくバッチファイルについて説明します。 – paxdiablo

答えて

0

あなたはメッセージが少し文字化けしていましたが、私はあなたがjavaがパス上にあると言っていると思いますが、バッチファイルからアプリケーションを正しく実行することはできません。 Java用のクラスパスオプション(-cp)がないようです。現在のディレクトリ(バッチファイルが住んでいる、すなわち1)を取得する

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

+0

"-cp"が必要ですか?私はJavaをCLASSPATHから自動的に選択しましたが(設定するのではなく、エクスポートする必要があるかもしれませんが) – paxdiablo

0

使用します。%cd%

例えば:これは試してみてくださいの* nix(例えばLinux)の下では

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

+0

@リチャード - %〜dp0はバッチファイルのディレクトリを取得します – McDowell

3

:のWindows NT/XPの下で

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 

/等:

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 
+0

Windows版の最後に元のディレクトリに戻ってきたとは思いません。環境の変更がスクリプトから漏れないようにするには、setlocal/endlocalを使用する必要があります。終了したら、現在のパスとドライブを保存して復元する必要があります。 – paxdiablo

+0

良い点。それに応じて更新。 Good ole 'MSの実装... – vladr

+0

そして+1。まあ、私を詰めてください!私はpushd/popdについて知らず、PWDを環境変数に保存しています。次にチェックアウトしたときにそのコードを変更することを忘れないでください。 – paxdiablo

1

私がヴラドの答えにコメントすることはできませんが(コメントは回答よりも多くのポイントを必要としますか?)私はいつも頼りになることには気をつけています。

CD /d %~dp0 

WindowsはUNCパスにCDを書き込むことができず、潜在的に致命的な結果を招くことなく、%windir%にあなたを落とす厄介な癖があります。

代わりに、それはより長いですが、完全なパスが必要なたびに、%〜dp0(またはその値を含む変数)を参照するほうがよいでしょう。

BAD:

cd /d %~dp0 
rd temp 

GOOD:

rd %~dp0\temp 
関連する問題