как запустить командный файл из любой папки - PullRequest
2 голосов
/ 03 марта 2009
cd ../../jobs
set CLASSPATH=.;../xyz.jar;../mysql-connector-java-5.1.6-bin.jar
java folser.folder1 ../Files/MySQL.xml
cd ..

Мне нужно запустить командный файл из любого каталога. Я установил пути для Java. Кто-нибудь может мне помочь?

Ответы [ 4 ]

3 голосов
/ 03 марта 2009

Под * 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 голос
/ 11 октября 2009

Хотя я не могу комментировать ответ Влада (комментарии требуют больше очков, чем ответов ?!), я бы всегда с осторожностью полагался на:

CD /d %~dp0

потому что Windows не может CD с путями UNC и имеет неприятную привычку переводить вас в% windir% вместо этого с потенциально катастрофическими результатами.

Вместо этого, хотя он более затянутый, обычно лучше обращаться к% ~ dp0 (или к переменной, содержащей это значение) каждый раз, когда вам нужен полный путь.

BAD:

cd /d %~dp0
rd temp

GOOD

rd %~dp0\temp
0 голосов
/ 03 марта 2009

Используйте% cd%, чтобы получить текущий каталог (т. Е. Тот, в котором находится пакетный файл)

, например

</p> <pre><code>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 голосов
/ 03 марта 2009

Ваше сообщение было немного искажено, я предполагаю, что вы говорите, что Java находится на пути, но вы не можете правильно запустить приложение из командного файла. Похоже, вам не хватает опции classpath (-cp) для Java. Попробуйте это:

cd ../../jobs
set CLASSPATH=.;../xyz.jar;../mysql-connector-java-5.1.6-bin.jar
java -cp %CLASSPATH% folser.folder1 ../Files/MySQL.xml
cd ..
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...