Chcę uruchomić RoboCopy, który zaktualizuje konsolę z% postępem, ale nie zaśmieci pliku dziennika z% postępem.
Następujące polecenie RoboCopy wykona żądaną kopię i dołączy informacje rejestrowania do pliku dziennika.
RoboCopy <source> <dest> /log+:<log file> /tee
Problem polega na tym, że plik dziennika jest zaśmiecony aktualizacjami% postępu. Dlatego muszę zmienić polecenie na to:
RoboCopy <source> <dest> /log+:<log file> /tee /np
Teraz problem polega na tym, że nie otrzymuję żadnych aktualizacji% postępu na ekranie.
Kilka razy przeczytałem http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx i nie mogę znaleźć potrzebnych przełączników. Czy coś mi brakuje lub czy to, co chcę osiągnąć, nie jest możliwe?
Odpowiedzi:
Ponieważ nikt nie odpowiedział na to tak długo, pomyślałem, że zasugeruję kilka rzeczy.
Jeśli używasz skryptów wsadowych, użycie sed nie powinno być trudne do usunięcia niechcianych informacji o postępie z pliku dziennika. Nie mam na to wystarczającego doświadczenia, aby dać ci rozwiązanie z wykorzystaniem go bez poświęcania na to czasu.
Istnieje jeden plik .exe z wersji
sed
w UnxUtils (z nieco bardziej aktualne wersji zip update).Inną opcją byłoby użycie XXCOPY zamiast
Robocopy
. Ma naprawdę śmieszną liczbę przełączników (ponad 230), co pozwala ci robić, co chcesz. Musisz spędzić cały wieczór na wyborze, z których chcesz skorzystać. Ma także okno dialogowe postępu GUI, jeśli wolisz z niego korzystać.Istnieje darmowa wersja do użytku osobistego, której nie można używać do automatycznego tworzenia skryptów, ponieważ trzeba interaktywnie postępować zgodnie z monitami, w przeciwieństwie do wersji płatnej.
Inną alternatywą jest RichCopy , która posiada GUI, którego można użyć do wyboru opcji. Może następnie podać wiersz polecenia operacji do użycia w skryptach wsadowych.
źródło
Re: robocopy i rejestrowany „hałas” postępu
Rozwiązanie: użyj just / TEE i pozwól mu rejestrować „szum”, w przeciwnym razie nie zobaczysz żadnego postępu. Następnie użyj sed, zgodnie z pierwszą sugestią, aby wyczyścić plik dziennika w następujący sposób:
sed -i.bak "s / \ x0d. * \ x0d. * $ //" logfile.txt
usuń .bak, jeśli nie chcesz nieusuniętej kopii zapasowej. sed jest dostępny tutaj dla systemu Windows i działa dobrze, przynajmniej dla pojedynczej * linii.
http://gnuwin32.sourceforge.net/packages/sed.htm
* (polecenia sed w uniksowych skryptach bash / cshell są często rozmieszczone w wielu wierszach, co zapewnia większą elastyczność i złożoność. Nie oczekuję, że tego typu polecenia sed będą działać ze skryptami cmd systemu Windows, ale sed nadal jest użyteczny w systemie Windows).
źródło
stdout
przejściesed
?tee
komenda może być użyta zamiast/TEE
przełącznika Robocopy , ale właśnie zdałem sobie sprawę, że jest to część,TCC/LE
a nie standardowaCMD
komenda. Jest jednak dostępny wPowerShell
.