Datei kopieren mit Robo kopieren und verarbeiten

8

Ich erstelle ein Programm zum Kopieren von Dateien, das eine große Anzahl von Dateien (~ 100.000) mit einer Größe von ~ 50 KB mit dem Befehl ROBOCOPY kopiert.

Für jede Datei erstelle ich einen neuen Prozess und übergebe den ROBOCOPY-Befehl und die Argumente wie folgt:

%Vor%

Anstatt für jede Datei einen Prozess zu erstellen, suche ich nach einem besseren Ansatz, der in Bezug auf Leistung und Design gut ist. Kann jemand eine bessere Methode vorschlagen?

    
Biju Thomas 25.10.2011, 14:21
quelle

5 Antworten

3

Ich würde einfach System.IO verwenden. Sollte genug schnell genug sein, und Ihr Dateiname könnte ein Platzhalter sein.

%Vor%     
William Stearns 25.10.2011, 14:39
quelle
9

Diese Frage ist ein bisschen alt, aber ich dachte, ich würde antworten, um jedem zu helfen, der noch darauf landet. Ich schrieb eine Bibliothek mit dem Namen RoboSharp ( Ссылка ), die alle guten Dinge in Robocopy zu c # bringt. Sehen Sie sich an, ob Sie die Leistungsfähigkeit von Robocopy in c # benötigen.

    
tjscience 22.04.2014 04:07
quelle
2

Sie sollten File.Copy in einer Schleife aufrufen.

    
SLaks 25.10.2011 14:24
quelle
0

.cmd hat folgende Zeilen

%Vor%

Wenn ich & gt; Robocopy sample.cmd    Ich beginne mit 4 multiple Windows Dateien gleichzeitig zu kopieren, wie oben beschrieben, es wartet    für eine andere Datei, da es eine Wartezeit hat, wenn die Datei von einem anderen Prozess verwendet wird. Es ist mehr    schneller als es Arbeit gleichzeitig erledigen.

Jetzt entwickle ich eine GUI mit C # -Fenstern, um den Prozess zu starten, statt zur Befehlskonsole und
   starten

%Vor%

Wenn es jedoch die Kontrolle über einen Prozess übernimmt, z. B. cmd.exe und vier Robocopy-Prozesse   Taskmanager. Wenn der Prozess cmd.exe abgeschlossen ist, wird der Cursor an label.text "Erfolgreich   abgeschlossen. "Während noch Robocopy-Prozesse laufen, können Sie die Robocopy-Fenster sehen   den Kopiervorgang machen.

Hier ist die Frage: Ich möchte die Kontrolle über alle Prozesse (cmd.exe und robocopy.exe) übernehmen   programmatisch in C #, so dass der label.text nur "erfolgreich abgeschlossen" anzeigen soll   Wenn alle Befehle erfolgreich ausgeführt wurden ", wenn ein Fehler auftritt, dann hat die GUI keinen Sinn.

Option 2 (ähnlich wie Biju oben geschrieben hat): ist es besser Robocopy Befehlsskripte zu entfernen?  sample.cmd (Batch - Datei) - Datei und schreiben Sie Code, um die 4 Robocopy - Zeilen in C # auszuführen, aber wie Sie das ausführen  robooooy script line geschriebene .cmd Datei, da sie auch Argumente haben. Ich Code führt jede Robocopy aus  Prozess wird dann jeder zur nächsten Zeile des Codes zurückkehren und wenn es fehlschlägt, können wir den Fehler abfangen und  Anzeige im Meldungsfeld.

Hoffe, das wird helfen ... Allerdings suche ich nach einem besseren Weg, wenn sich jemand verbessern kann.

    
Kishor H Oswal 03.09.2013 06:56
quelle
0
%Vor%     
Dibya Raj 28.07.2016 06:55
quelle

Tags und Links