cmd ma następujące linie
Start ROBOCOY src dest a* b* c* /z /w:1 r:1
Start ROBOCOY src dest d* e* f* g* /z /w:1 r:1
Start ROBOCOY src dest h* K* P* Y* /z /w:1 r:1
Start ROBOCOY src dest xry* srp* /z /w:1 r:1
Kiedy biegnę> Robocopy sample.cmd I zaczyna się od 4 wielu okien kopiowanie plików jednocześnie, jak na powyższych poleceń, to czeka do innego pliku, jak ma czas oczekiwania, jeśli plik jest używany przez inny proces. Jest więcej szybsze, niż wykonywanie pracy jednocześnie.
Teraz Zajmuję GUI za pomocą C# Windows, aby uruchomić proces zamiast zamierza dowodzić konsoli i
rozpoczęcia
main()
{
process.start("path of sample.cmd")
process.waitforexit()
label.text=" sucessful copy"
}
Jeśli jednak przejmuje kontrolę nad jednym procesie, czyli cmd.exe i i istnieje 4 procesy robocopy w menedżerze zadań . po zakończeniu procesu cmd.exe, zwraca kursor do etykiety.tekst "Zakończono pomyślnie". Chociaż nadal istnieją procesy robocopy. możesz zobaczyć robocopy windows podczas kopiowania.
Oto pytanie: Chcę, by przejąć kontrolę nad wszystkimi procesami (cmd.exe i robocopy.exe) programowo w C#, tak, że gdy label.text powinien wyświetlać „pomyślnie” tylko gdy wszystkie polecenia Pomyślnie zakończono ", jeśli się nie powiedzie, nie ma sensu w GUI:
opcja 2 (podobna do Biju napisał powyżej): czy lepiej jest usunąć skrypty poleceń robocopy z sample.cmd (plik wsadowy) plik i napisać kod, aby uruchomić 4 linie robocopy w języku C#, ale jak uruchomić skrypt roboczy napisany plik .cmd, ponieważ mają one również argumenty.Zapytam kod każdego procesu robocopy następnie każdy powróci do następnej linii kodu, a jeśli się nie powiedzie, możemy uchwycić błąd i wyświetlić komunikat w oknie komunikatu.
Mam nadzieję, że to pomoże ... Jednak szukam lepszego sposobu, jeśli ktoś może poprawić to samo.
Dlaczego nie używałbyś tylko metody File.Copy()? –
Jakie są Twoje wymagania? Robocopy ma wiele funkcji (wielowątkowość, wznawianie, ponawianie itd.), Które Cię interesują? – RedFilter
Czy istnieje szczególny powód, dla którego używasz RoboCopy? – Marco