Проблема с запуском *.cmd

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Shouldercannon
Сообщения: 74
Зарегистрирован: 08 июн 2008, 15:49

Пытаюсь запустить из своей программы *.com со следующим содержимым

Код: Выделить всё

@ECHO OFF
title jImBot 0.4.0 MOD dimaX VS warik
mode con cp select=1251
echo ---------------------------
java -jar modJB.jar
Так запускается нормально

Код: Выделить всё

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShellExecute(0, 'open', PChar(ExtractFilePath(Application.ExeName) + 'Start.cmd'), nil, nil, SW_SHOW); или ShellExecute(Handle, 'open', PChar(ExtractFilePath(Application.ExeName) + 'Start.cmd'), nil, nil, SW_RESTORE);
end;
Если я указываю полный путь

Код: Выделить всё

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShellExecute(0, 'open', 'D:\AppServ\www\Start.cmd'), nil, nil, SW_SHOW); или ShellExecute(Handle, 'open', 'D:\AppServ\www\Start.cmd'), nil, nil, SW_RESTORE);
end;
то не запускается, только окно Start.com покажется и тут же исчезнет.
В чём ошибка?
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

D:\\ ?
[syntax=Delphi] [/syntax]
Shouldercannon
Сообщения: 74
Зарегистрирован: 08 июн 2008, 15:49

Duncon писал(а):D:\\ ?

Непонял ответа
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Duncon писал(а):D:\\ ?
Это ж Delphi, а не C, тут в строковых константах бэк-слэши задваивать не нужно.

Методом исключения напрашивается вывод, что банально укзано не то полное имя. Т.е. файл или лежит не в том каталоге, или под другим именем.

Для проверки предлагаю отобразить строку, поллчающуюся в первом случае:
ShowMessgage ('<' + PChar(ExtractFilePath(Application.ExeName) + 'Start.cmd' + '>')
Shouldercannon
Сообщения: 74
Зарегистрирован: 08 июн 2008, 15:49

Вы меня не слышите. Путь на 100% верный (проврено, перепроверено). В start.com надо было после java -jar modJB.jar добавить pause, но и тут ошибки не завтавили себя долго ждать. Так как путь верный, то start.com запускается и
D:\Server CMS Icq>title jimBot 0.4.0 MOD dimaX VS warik

D:\Server CMS Icq>mode con cp select=1251

Состояние устройства CON:
--------------------------
Строки: 300
Столбцы: 80
Скорость клавиатуры: 31
Задержка клавиатуры: 1
Кодовая страница: 1251


D:\Server CMS Icq>java -jar modJB.jar
Unable to access jarfile modJB.jar

D:\Server CMS Icq>pause
Для продолжения нажмите любую клавишу . . .

D:\Server CMS Icq - это папка, где лежит моя программа, которая запускает start.com. В чём косяк я не пойму.
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Shouldercannon писал(а):D:\Server CMS Icq>java -jar modJB.jar
Unable to access jarfile modJB.jar

D:\Server CMS Icq - это папка, где лежит моя программа, которая запускает start.com. В чём косяк я не пойму.
Вероятно, запустившаяся java не может найти файл modJB.jar, о чем и сообщает: "Unable to access jarfile modJB.jar".
Видимо, в cmd-файле при запуске java надо или указать полный путь jar-фала, или каким-то иным способом (через переменные среды или другие настройки) сообщить ей, в каком (каких) каталоге(ах) ей следует искать jar-файлы.
Ответить