Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.21;
Скачать: CL | DM;

Вниз

Как дождаться выполнения bat-файла?   Найти похожие ветки 

 
Гость2   (2005-06-26 10:13) [0]

Из приложения запускаю bat-файл, который выполняет команды на протяжении 2-3 минут. Надо проверить правильность выполнения батника (наличие созданых батником файлов и папок). Но это можна сделать только, когда батник проработал до конца. Как определить, что батник завершил роботу?


 
MS-MEN ©   (2005-06-26 18:33) [1]

Есть такие ф-ций но не помню (Все помнить не возможно)
предлагаю указать инструкцию в конце "BAT" файла
простую команду, например создание директорий.

Вот может это поможет.

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Запуск программы и ожидание ее окончания, принудительное завершение если timeout

Функция создавалась для запуска и сопровождения приложения в указаном интервале времени.
Я лично для наблюдения за работой приложения включил функцию в нить,
которая (обрывалась) по завершении процесса.

Зависимости: Classes, SysUtils, Windows, strUtils, Consts;
Автор:       August, august@torba.com, ICQ:176381214
Copyright:   doctorAugust
Дата:        5 февраля 2003 г.
***************************************************** }

function ExecuteFileTm(FileName: string; Params: string; Dsk: boolean; TimeOut:
 cardinal): boolean;
var
 Res: LongBool;
 PIn: PROCESS_INFORMATION;
 SII: STARTUPINFO;
 RetCode: cardinal;
 TmOut: cardinal; //In seconds
 i: cardinal;
 CreationsFlags: cardinal;
begin
 TmOut := TimeOut;
 try
   if Dsk then
   begin
     CreationsFlags := CREATE_DEFAULT_ERROR_MODE or NORMAL_PRIORITY_CLASS
       or CREATE_UNICODE_ENVIRONMENT;
   end
   else
   begin
     CreationsFlags := CREATE_DEFAULT_ERROR_MODE or CREATE_NO_WINDOW
       or NORMAL_PRIORITY_CLASS
       or CREATE_UNICODE_ENVIRONMENT;
   end;
   getstartupinfo(SII);
   Res := createprocess(
     pchar(FileName),
     pchar(Params),
     nil,
     nil,
     True,
     CreationsFlags,
     nil,
     pchar(extractfilepath(FileName)),
     SII,
     PIn);
 except
   CloseHandle(Pin.hProcess);
   ExecuteFileTm := False;
   exit;
 end;
 if not Res then
 begin
   CloseHandle(Pin.hProcess);
   ExecuteFileTm := False;
   exit;
 end;
 i := 0;
 RetCode := STILL_ACTIVE;
 while (i <= TmOut) and (RetCode = STILL_ACTIVE) do
 begin
   try
     GetExitCodeProcess(Pin.hProcess, RetCode);
   except
     CloseHandle(Pin.hProcess);
     ExecuteFileTm := False;
     exit;
   end;
   Sleep(1000);
   inc(i);
 end;
 if (i > TmOut) and (RetCode = STILL_ACTIVE) then
 begin
   TerminateProcess(Pin.hProcess, RetCode);
   CloseHandle(Pin.hProcess);
   // ExecuteFilePrExt:=false;
   ExecuteFileTm := false; // ION T
   exit;
 end;
 CloseHandle(Pin.hProcess);
 ExecuteFileTm := True;
end;


 
MS-MEN ©   (2005-06-26 18:38) [2]

function WinExecAndWait(Path: PChar; Visibility: Word): Word;
var
 InstanceID: THandle;
 Msg: TMsg;
begin
 InstanceID := WinExec(Path, Visibility);
 if InstanceID < 32 then { значение меньше чем 32 указывает на ошибку }
   WinExecAndWait := InstanceID
 else
   repeat
     while PeekMessage(Msg, 0, 0, 0, pm_Remove) do
     begin
       if Msg.message = wm_Quit then
         Halt(Msg.WParam);
       TranslateMessage(Msg);
       DispatchMessage(Msg);
     end;
   until
     GetModuleUsage(InstanceID) = 0;
 WinExecAndWait := 0;
end;


 
BiN ©   (2005-06-27 11:38) [3]

MS-MEN ©   (26.06.05 18:33) [1], [2]
http://www.veloplus.ru/invent/g/sht1.jpg
-)

смотрим Wait-функции



Страницы: 1 вся ветка

Текущий архив: 2005.08.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.039 c
3-1121011873
Kreyl
2005-07-10 20:11
2005.08.21
Что я делаю неправильно? Запрос или код?


14-1119676221
cyborg
2005-06-25 09:10
2005.08.21
Ламповый автомобильный CD-ресивер


6-1115755390
whiletruedo
2005-05-11 00:03
2005.08.21
как обратиться к открытому IE?


14-1122368337
Calm
2005-07-26 12:58
2005.08.21
Хороший(!) просмотрщик DJVU. Где взять?


1-1122904145
BFG9k
2005-08-01 17:49
2005.08.21
Перемещение компонента по форме