Вопрос
Есть проблема:
Пытаюсь выполнить .bat файл, в результате которого данные либо садятся в Оракл без ошибок, либо создается файл с ошибками… Необходимо заголовку метки передавть состояние загрузки — либо все ок либо есть ошибки (создался файл .bad).
Как подождать пока .bat файл закончит свою работу, а уже потом проверять наличие файла ошибок? класс cmd программа не восприняла… имя заголовка может быть разным (заранее неизвестным)…И еще вопрос — можно ли самому формировать заголовок запускаемого окна командной строки (в данном случае)?
Ответ
Если я правильно понял то надо при определенных условиях выполнить один bat файл и дождаться пока он завершиться. Если так то вот процедура которая это делает:
Function FssRunWait(Const FileName,CmdLine:
String;
Show:
integer = SW_SHOWNORMAL):
Integer;
var StartupInfo : TStartupInfo;
ProcessInfo : TProcessInformation;
Res : Cardinal;
begin FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb:=Sizeof(StartupInfo);
StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow:=Show;
if (FileName = '') then Result:=FssBoolToInt(CreateProcess(nil,PChar(CmdLine),nil,nil,false,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,nil,nil,StartupInfo,ProcessInfo))
else Result:=FssBoolToInt(CreateProcess(nil,PChar(FileName+' '+CmdLine),nil,nil,false,CREATE_NEW_CONSOLE
or NORMAL_PRIORITY_CLASS,nil,nil,StartupInfo,ProcessInfo));
if (Result = 0) then Exit else begin CloseHandle(ProcessInfo.hThread);
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,Res);
Result:=Res;
CloseHandle(ProcessInfo.hProcess);
end;
end;
Из конференции Expert_FAQ
Copyright 2000-2004 Сообщество Чайников
Контактная информация