Jak uzyskać robocopy do korzystania z pliku dziennika zawierającego spacje?

11

Próbuję następującego polecenia:

robocopy "x:\dir" "y:\dir" /mir /z /tee /fft /nfl /ndl /eta /log:"x:\path to logs\12-15-11 01 file with spaces.txt"

Otrzymuję ten błąd:

ERROR : Invalid Parameter #10 : "/log:x:\path to logs\12-15-11 01 file with spaces.txt"

EDYCJA 1

Okazuje się, że powyższe polecenie było prawidłowe, miałem literówkę na swojej drodze. Jeśli masz ścieżkę zawierającą spacje, możesz podać je do przełącznika robocopy / log w następujący sposób:/log:"c:\path to a file\robocopy.log"

slm
źródło
Pracuje dla mnie. Czy może u góry wyświetla się bardziej szczegółowy błąd?
Carko,
Czy uruchamiasz to polecenie w kontekście skryptu zamiast bezpośrednio w wierszu polecenia. Być może coś jeszcze dodaje ucieczki?
Zoredache,
Komunikat o błędzie sugeruje, że początkowe znaki cudzysłowu występują przed dwukropkiem; czy jesteś pewien, że polecenie, które próbujesz uruchomić, jest pokazane?
Harry Johnston,
Przepraszam, miałem literówkę na ścieżce. Głównie zawstydzony. Dzięki za szybką pomoc wszystkich! Jaka jest procedura, czy powinienem usunąć to pytanie? Czy też mogę to przeformułować i dodać odpowiedź pokazującą, że możesz wstawić cudzysłowy wokół argumentu przełącznika / log robocopy?
slm
Nie ma powodu, aby usunąć @slm. Jeśli jeden z powyższych komentarzy pomógł ci znaleźć problem, poproś go o opublikowanie go jako odpowiedzi, a następnie oznacz odpowiedź jako poprawną. Jeśli problem dotyczył czegoś zupełnie innego, napisz własną odpowiedź i oznacz ją jako odpowiedź, aby przyszli użytkownicy mogli sprawdzić, czy mają podobny problem.
music2myear

Odpowiedzi:

11

Jeśli musisz podać ścieżkę zawierającą spacje do przełącznika robocopy / log, możesz to zrobić w następujący sposób:

/log:"c:\path to logs files\some log file.txt"
slm
źródło
Dostaję nieprawidłowy błąd: parametr nr 11 „/ log”. Dodałem go na końcu innego, działającego polecenia.
Andrew S
Nie pracuję już tam, gdzie obsługuję okna, więc nie mam możliwości przetestowania tego.
slm
Upewnij się, że istnieje katalog macierzysty pliku dziennika. Robocopy go nie utworzy i niestety narzeka na parametr cmdline, jeśli katalog nie istnieje.
mojo
4

Istnieją cztery sposoby rejestrowania jako dokumentacja programu PowerShell

/log:<LogFile> : Zapisuje dane wyjściowe statusu do pliku dziennika (zastępuje istniejący plik dziennika).

  • na przykład: robocopy "c:\a" "c:\b" /log:"c:\copy_log.log"

/log+:<LogFile> : Zapisuje dane wyjściowe statusu do pliku dziennika (dołącza dane wyjściowe do istniejącego pliku dziennika).

  • na przykład: robocopy "c:\a" "c:\b" /log+:"c:\copy_log.log"

/unilog:<LogFile> : Zapisuje dane wyjściowe statusu do pliku dziennika jako tekst Unicode (zastępuje istniejący plik dziennika).

  • na przykład: robocopy "c:\a" "c:\b" /unilog:"c:\copy_log.log"

/unilog+:<LogFile> : Zapisuje dane wyjściowe statusu do pliku dziennika jako tekst Unicode (dołącza dane wyjściowe do istniejącego pliku dziennika).

  • na przykład: robocopy "c:\a" "c:\b" /unilog+:"c:\copy_log.log"

Aby uzyskać więcej informacji https://technet.microsoft.com/en-us/library/cc733145(v=ws.11).aspx

Nayana Adassuriya
źródło
Polecam również dodać /teeprzełącznik, ponieważ to również wyświetla dane wyjściowe z wiersza poleceń i pozwala użytkownikowi zobaczyć postęp kopiowania plików również w wierszu poleceń.
vibs2006
1

Dzieje się tak, gdy potrzebujesz uprawnień administratora / lub pop, aby utworzyć plik w tym katalogu

Więc spróbuj mieć katalog log / temp i spróbuj dodać plik dziennika do tego katalogu

$ mkdir C:\log

na przykład:

$ robocopy "c:\a" "c:\b" /log:"c:\log\copy_log.log"
jaismeensandhu
źródło
0

Jeśli ścieżka do pliku dziennika zawiera spacje lub inne ograniczniki skryptów, dołącz go do cudzysłowów, takich jak EDIT # 1 i @slm. Pamiętaj jednak o użyciu znaków specjalnych, jak opisano w niniejszej dokumentacji dotyczącej skryptów wsadowych .

Alain
źródło
Mam ten sam problem po dość katastrofalnej i niechcianej migracji do Win 10.
Marc