Форум: "Основная";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];
ВнизПолучение вывода команды xcopy Найти похожие ветки
← →
Priest © (2006-06-09 11:11) [0]Запускаю данную команду, как получить то что она обычно выводит в консоль?
← →
Ega23 © (2006-06-09 11:29) [1]xcopy ... >>1.txt
Потом откроешь этот 1.txt
← →
Priest © (2006-06-09 11:30) [2]так мне нужно в реал тайм. Я запускаю свою прогу и в ней xcopy. И мне нужо знать что делает прога....xcopy показывает ход выполнения и указывает какой файл скопирован только что....Как такое сделать?
← →
easy © (2006-06-09 11:30) [3]http://dfc.com.ru/?sid=2&id=7&itemid=2
← →
Priest © (2006-06-09 11:51) [4]>>easy
Спасибо :)
← →
Ega23 © (2006-06-09 12:33) [5]
> http://dfc.com.ru/?sid=2&id=7&itemid=2
Прикольно, спасибо за ссылочку...
← →
Priest © (2006-06-09 14:02) [6]Только для xcopy не работает. Для "route print" всё отлично работает, потому что эта команда выводит результат в конце выполнения. а xcopy постоянно выводит и поэтому не видно вплоть до завершения :(
← →
Zz_ (2006-06-09 14:40) [7]За такие ФАКИ надо отрывать ...
while(True)do begin
Sleep(10);
PeekNamedPipe(rdout, @buf[1], 1023, @bread, @avail, nil);
if(bread > 0)then begin
ZeroMemory(@buf[1],sizeof(buf));
if(avail > 1023)then begin
while(bread >= 1023)do begin
ReadFile(rdout, buf[1], 1023, bread, nil);
mLog.Text := mLog.Text + PChar(@buf[1]);
ZeroMemory(@buf[1],sizeof(buf));
end;
end else begin
ReadFile(rdout, buf[1], 1023, bread, nil);
mLog.Text := mLog.Text + PChar(@buf[1]);
end;
end;
GetExitCodeProcess(pi.hProcess, exit_);
if(exit_ <> STILL_ACTIVE)then break;
end;
← →
Priest © (2006-06-09 14:57) [8]>>Zz_
А отдельной функции нет? Я не пойму куда это прописывать?
← →
Zz_ (2006-06-09 15:08) [9]Честно говоря, лично я подобным практически не занимаюсь.
Могу привести лишь код. Почему сделано именно так, я объяснить не могу.
var si : STARTUPINFO;
pi : PROCESS_INFORMATION;
sa : SECURITY_ATTRIBUTES;
sd : SECURITY_DESCRIPTOR;
cout : THandle;
rdout : THandle;
exit_ : DWORD;
bread : DWORD;
avail : DWORD;
buf : array[1..1024] of Char;
sFileCfg : String;
S : String;
tf : TextFile;
n : Integer;
k : Integer;
begin
Screen.Cursor := crHourGlass;
try
if( gf_IsWinNT )then begin
InitializeSecurityDescriptor(@sd,SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(@sd, True, nil, False);
sa.lpSecurityDescriptor := @sd;
end else begin
sa.lpSecurityDescriptor := nil;
end;
sa.nLength := sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle := LongBool(True);
for n := 0 to(lbZRE.Count-1)do begin
sFileCfg := . . .;
AssignFile(tf, sFileCfg);
try
ReWrite(tf);
WriteLn(tf, "[Connection]");
. . .
finally
{$I-}CloseFile(tf);{$I+}IOResult;
end;
mLog.Lines.Add( "Обработка протокола < " + lbZRE.Items[n] +" >");
if(not CreatePipe(rdout,cout,@sa,0))then raise Exception.Create("Error CreatePipe");
ZeroMemory(@si,sizeof(si));
si.cb := SizeOf(si);
GetStartupInfo(si);
si.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
si.wShowWindow := SW_HIDE;
si.hStdOutput := cout;
if not CreateProcess(
nil
, PChar("....exe" + " " + sFileCfg)
, nil
, nil
, True
, CREATE_NEW_CONSOLE
, nil
, nil
, si
, pi
)then begin
CloseHandle(cout);
CloseHandle(rdout);
raise Exception.Create("Error CreateProcess");
end;
exit_ := 0;
while(True)do begin
Sleep(10);
PeekNamedPipe(rdout, @buf[1], 1023, @bread, @avail, nil);
if(bread > 0)then begin
ZeroMemory(@buf[1],sizeof(buf));
if(avail > 1023)then begin
while(bread >= 1023)do begin
ReadFile(rdout, buf[1], 1023, bread, nil);
mLog.Text := mLog.Text + PChar(@buf[1]);
ZeroMemory(@buf[1],sizeof(buf));
end;
end else begin
ReadFile(rdout, buf[1], 1023, bread, nil);
mLog.Text := mLog.Text + PChar(@buf[1]);
end;
end;
GetExitCodeProcess(pi.hProcess, exit_);
if(exit_ <> STILL_ACTIVE)then break;
end;
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
CloseHandle(cout);
CloseHandle(rdout);
if(exit_ = 0)then begin
mLog.Lines.Add("Протокол обработан успешно");
end else begin
mLog.Lines.Add("Ошибка обработки № ( " + IntToStr(Integer(exit_)) + " )");
end;
end;
finally
Screen.Cursor := crDefault;
end
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.014 c