Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Вниз

Как дождаться выполнения 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.044 c
3-1121004029
Ling
2005-07-10 18:00
2005.08.21
Zeos и запрс из нескольких частей


4-1120060152
Alex_Korn
2005-06-29 19:49
2005.08.21
Время создания ключа в реестре


14-1122115821
Piter
2005-07-23 14:50
2005.08.21
Может ли мотоцикл разогнаться до 315 км/ч?


14-1122309910
YurikGL
2005-07-25 20:45
2005.08.21
Поздравляю!!!


3-1121238833
_Anton
2005-07-13 11:13
2005.08.21
BDE Oracle Blob





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский