Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Windows
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2014, 12:40   #1
prgmdelphi
Пользователь
 
Регистрация: 13.05.2014
Сообщений: 73
Вопрос В расшаренной папке запуск exe через bat

Добрый день. Есть компьютеры в сети (comp1, comp2...compN). На comp1 расшарена папка, в которой есть load.bat и myprog.exe.
Стоит задача, пользователям этих компьютеров запускать с параметром myproj.exe -X. Это собственно делает load.bat:
Код:
start "Запуск MyProg" "%~dp0\MyProg.exe" -X
Все вроде бы замечательно - прога стартует, но как выяснилось, если запускать прогу через load.bat ее поведение не тоже самое как если бы ее запускать через командную строку MyProg.exe -X в каталоге расшаренной папки.
В чем именно отличается поведение, а вот в чем - дело в том что MyProg.exe использует в своей работе СУБД Firebird, который запущен как сервис на comp1.
Так вот если запускать через load.bat, то не удается подключиться даже к security2.fdb (база, идущая с поставкой firebird), если напрямую ч/з командную строку, то все ок.

Что нужно написать в load.bat, чтобы запуск myprog.exe был аналогичен запуску в командной строке?
prgmdelphi вне форума Ответить с цитированием
Старый 27.08.2014, 13:10   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

А если убрать "start"?
waleri вне форума Ответить с цитированием
Старый 27.08.2014, 13:18   #3
prgmdelphi
Пользователь
 
Регистрация: 13.05.2014
Сообщений: 73
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
А если убрать "start"?
не помогает, кстати при запуске load.bat хоть со start'ом хоть без него в консоли выводится сообщение:
"Указанный путь был использован при запуске CMD.EXE в качестве текущей папки. CMD.EXE не поддерживает пути UNC. По умолчанию выбрана системная папка Windows.
prgmdelphi вне форума Ответить с цитированием
Старый 27.08.2014, 14:27   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

подключите расшареную папку как диск.
и потом ваш батник должен переходить в папку с ПО, и там уже запускать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.08.2014, 15:17   #5
prgmdelphi
Пользователь
 
Регистрация: 13.05.2014
Сообщений: 73
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
подключите расшареную папку как диск.
и потом ваш батник должен переходить в папку с ПО, и там уже запускать.
Нет такой возможности, нужна сделать именно, чтобы работало в четевом каталоге
prgmdelphi вне форума Ответить с цитированием
Старый 27.08.2014, 15:56   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Тогда не используйте батник.
Сделайте самостоятельную ЕХЕшку, чтоб запускала с нужными параметрами, либо сделайте shortcut (lnk файл) на подобии иконок рабочего стола. Отсюда собственно и вопрос - зачем изначально понадобился батник?
waleri вне форума Ответить с цитированием
Старый 28.08.2014, 13:03   #7
prgmdelphi
Пользователь
 
Регистрация: 13.05.2014
Сообщений: 73
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
либо сделайте shortcut (lnk файл) на подобии иконок рабочего стола
Ну да, пока так и сделал, но все же хотелось через bat-файл.
prgmdelphi вне форума Ответить с цитированием
Старый 28.08.2014, 14:12   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Ну сделайте бат чтоб запускал lnk...
waleri вне форума Ответить с цитированием
Старый 28.08.2014, 16:04   #9
prgmdelphi
Пользователь
 
Регистрация: 13.05.2014
Сообщений: 73
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Ну сделайте бат чтоб запускал lnk...
MyProg на старте для проверки наличия Firebird использует
Код:
isc_attach_database(PISC_STATUS(@StVect), Length(cSecDB), PChar(cSecDB), @hDB, 0, nil); //где cSecDB = 'security2.fdb'
if ((StVec[0] = 1) and (StVec[1] = isc_unavailable)) then 
begin {здесь true возникает если запуск происходит через load.bat, false в противном случае}
  ShowMsgErr;
  //other my code
end;
Хотелось бы понять почему из запуск MyProg под командной строки приводит к корректной отработки isc_attach_database, а из под load.bat к StVec[1] = isc_unavailable. Хотя на вход что в первом случае, что во втором передается security2.fdb в isc_attach_database
prgmdelphi вне форума Ответить с цитированием
Старый 28.08.2014, 16:28   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

текущая директория разная.
и в разных местах ищется БД.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск программы через .exe EddieG Общие вопросы по Java, Java SE, Kotlin 2 04.03.2012 02:26
CreateProcess, правильный запуск bat and exe.. m.a.x.i.m Win Api 1 23.09.2010 09:04
запуск exe файлов через Delphi Mihanches Общие вопросы Delphi 4 17.09.2010 18:59
Запуск exe через интернет - реальность или миф? Drek Свободное общение 12 06.08.2010 19:41
Запуск .exe через Delphi bookkc Общие вопросы Delphi 5 17.06.2009 16:59