Запустить bat-афйл находящийся на сетевом диске
Модератор: Модераторы
Запустить bat-афйл находящийся на сетевом диске
Доброго здоровья уважаемые.
Проблема образовалась и никак не могу ничего поделать с этим.
В общем есть bat-файл лежащий в локальной сети и его необходимо выполнить.
Пробую стартануть его тремя способами и ни один не работает.
Путь к файлу выглядит - \\fs\3c\OPERFILE\FoldExec\ldr.bat
Результатом работы должна быть загрузка данных из текстового файла в БД Oracle.
Внутри батника строки запуска sqlldr.exe (оракловый загрузчик) с параметрами, которые представляют собой файлы описания полей.
Параметры "лежат" тут же, рядом с батником
Для запуска пробую такие варианты, но результат всегда отрицательный
P := TProcess.Create(nil);
s := DirDestination2.Directory+'\ldr.bat';
1) CreateProcess(nil, PChar(s), nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, @si, @pi );
2) ShellExecute(FMain.Handle, nil, PChar(s), nil, nil, SW_RESTORE);
3) P.CommandLine := s; P.Execute;
Прошу совета. Что не так делаю ?
Проблема образовалась и никак не могу ничего поделать с этим.
В общем есть bat-файл лежащий в локальной сети и его необходимо выполнить.
Пробую стартануть его тремя способами и ни один не работает.
Путь к файлу выглядит - \\fs\3c\OPERFILE\FoldExec\ldr.bat
Результатом работы должна быть загрузка данных из текстового файла в БД Oracle.
Внутри батника строки запуска sqlldr.exe (оракловый загрузчик) с параметрами, которые представляют собой файлы описания полей.
Параметры "лежат" тут же, рядом с батником
Для запуска пробую такие варианты, но результат всегда отрицательный
P := TProcess.Create(nil);
s := DirDestination2.Directory+'\ldr.bat';
1) CreateProcess(nil, PChar(s), nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, @si, @pi );
2) ShellExecute(FMain.Handle, nil, PChar(s), nil, nil, SW_RESTORE);
3) P.CommandLine := s; P.Execute;
Прошу совета. Что не так делаю ?
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
а сетевую папку подключить как сетевой диск что-то мешает?
Padre_Mortius писал(а):а сетевую папку подключить как сетевой диск что-то мешает?
Ничего не мешает, но мне кажется это не хорошо.
Приспичит установить в другом месте и надо не забыть прописать там такую же папку.
И может оказаться, что буковка занята, а пользователь привык к такому раскладу и пошло-поехало. К пользователю надо относиться бережно, я так думаю )))
И потом может вполне оказаться, что такой же подход реализовал какой нить другой программист.
Короче по моему проблемы могут возникнуть на ровном месте.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
запуск скриптов с сетевого диска, имхо, не очень правильное решение
Код: Выделить всё
NET USE | FIND " X: "
IF ERRORLEVEL 0 GOTO :X_USED
NET USE X: \\fs\3c\
CALL X:\OPERFILE\FoldExec\ldr.bat
NET USE X: /DELETE
:X_USED
Кроме того, батники сами по себе не могут запускаться - нужен 'cmd.exe /C X:\OPERFILE\FoldExec\ldr.bat'
bestonix писал(а):Результатом работы должна быть загрузка данных из текстового файла в БД Oracle.
Внутри батника строки запуска sqlldr.exe (оракловый загрузчик) с параметрами, которые представляют собой файлы описания полей.
А как, на счёт, реализовать всё то же самое прямо в своей программе?
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
или хотя бы скачать батник с параметрами в директорию пользователя с последующим удалением?
Благодарю всех ответивших за помощь.
Все заработало как положено.
Все заработало как положено.
-
SAK
- постоялец
- Сообщения: 158
- Зарегистрирован: 17.02.2006 23:45:14
- Откуда: Тим
- Контактная информация:
v-t-l писал(а):Код: Выделить всё
NET USE | FIND " X: "
IF ERRORLEVEL 0 GOTO :X_USED
NET USE X: \\fs\3c\
CALL X:\OPERFILE\FoldExec\ldr.bat
NET USE X: /DELETE
:X_USED
Кроме того, батники сами по себе не могут запускаться - нужен 'cmd.exe /C X:\OPERFILE\FoldExec\ldr.bat'
Можно и короче, сразу указать UNC путь "cmd.exe /C \\fs\3c\OPERFILE\FoldExec\ldr.bat" не создавая логического диска X:
