Entwickler-Ecke
Sonstiges (Delphi) - xcopy im Delphi-Programm benutzen und mitschreiben
pwsolaris - Mi 13.07.11 13:18
Titel: xcopy im Delphi-Programm benutzen und mitschreiben
Hallo,
ich habe mal wieder eine eher einfache Frage.
Ich möchte ein BackUp Programm für mich privat schreiben, welches mit dem Befehl "xcopy" arbeitet.
Bisher habe ich das immer über eine BAT Datei gelöst.
In meinem Programm möchte ich nur das Quell- und Ziellaufwerk auswählen und dann mit einem Button alle Dateien der Quelle auf das Ziellaufwerk sichern.
Zudem möchte ich den Sicherungsprozess mitloggen.
Wenn ich xcopy über die Eingabeaufforderung starte, sehe ich ja auch immer welche Datei er momentan kopiert usw. Diese Ausgabe möchte ich in meinem Programm in einem Memo-Feld verwirklichen und zudem auch in einer Text-Datei speichern.
Wie ich den Befehl xcopy aufrufe ist mit bekannt. Mir geht es hier vielmehr um das Anzeigen des xcopy- Status.
Kann mir einer von euch sagen, wie ich die Ausgabe über meine Programmoberfläche am besten umsetzen kann?
bummi - Mi 13.07.11 14:03
Shellexecute und und Datei umleiten per >>
oder etwas in der Art: ConsoleThread ist im Anhang
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| implementation uses ConsoleThread;
var cs:TConsoleThread;
Procedure TheCallBack(s:AnsiString); var ansi:WideString; begin Setlength(ansi,length(s)); OemToChar (@s[1],@ansi[1]); ansi := StringReplace(StringReplace(ansi,#9689,#10,[rfReplaceAll]),#9834,#13,[rfReplaceAll]); Form1.Memo1.Text:=Form1.Memo1.Text+ansi; Form1.Memo1.Perform(EM_LineScroll, 0 , Form1.Memo1.Lines.Count-1);
end;
procedure TForm1.Button7Click(Sender: TObject); begin cs := TConsoleThread.Create('cmd /C xcopy C:\temp\*.txt C:\temp\kill /Y'#13#10, '','',TheCallBack); cs.Resume; end; |
zuma - Mi 13.07.11 14:40
ganz simple variante
erweitern zu
Delphi-Quelltext
1:
| xcopy C:\temp\*.txt c:\Zielordner /y > DeinLogDateiName.txt |
Dann im Prog einfach die Datei 'DeinLogDateiName.txt' in ein Memo einlesen
Martok - Mi 13.07.11 15:01
Noch simpler: suche mal nach TDosCommand.
EDIT: wobei ich grade sehe, TConsoleThread ist schon da. Das reicht dann ja ;)
Martok - Do 14.07.11 09:42
Spricht doch nix dagegen, das zu nutzen wenn es alles kann was der OP will.
Gut, ich verwende in meiner Sync-Lösung auch Robocopy (mit Wrapper-Skripten), aber das halt weil ich /MIR gebraucht hab ;)
Delete - Do 14.07.11 10:07
hathor hat folgendes geschrieben : |
| XCOPY ist uralt und hat nur eingeschränkte Möglichkeiten. |
Was hat das alter eines Programms mit seiner Funktionalität zu tun? Es wird noch immer von Microsoft zu seinen Betriebssystemen ausgeliefert. Warum soll man es also nicht nutzen? Und wenn es das tut, was verlangt wird, warum dann ein anderes nutzen? Oder würdest du mir auch empfehlen Photoshop für mehrere tausend Euro zu kaufen nur, um Bilder etwas nachzuschärfen und rote Augen zu korrigieren? :roll:
Aber was ganz anderes? Warum wird da jetzt ein Delphi Programm drumherum gebastelt? Wenn ich schon ein Delphi Programm dafür schreibe, dann kann ich doch auch gleich die passenden API Funktionen nutzen. Wenn ich doch nur wieder ein Konsolenprogramm aufrufe, kann ich doch auch bei dem Batchscript bleiben.
Nersgatt - Do 14.07.11 10:10
Ich finde, für ein Anfängerprojekt ist ein Wrapper für eine Konsolenanwendung durchaus ein schönes Projekt. Und wenn dann auch noch was einigermaßen nützliches rauskommt - um so besser.
Ich hab auch mal vor 15 Jahren damit angefangen, einen Wrapper für ein MP3-Konvertierungstool in VB zu programmieren. Also, why not?
Dass man es als etwas erfahrener Programmierer vielleicht anders machen würde steht auf einem anderen Blatt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!