Bagaimana cara mendapatkan robocopy untuk menggunakan file log yang mencakup spasi?

11

Saya mencoba perintah berikut:

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"

Saya mendapatkan kesalahan ini:

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

EDIT # 1

Ternyata perintah di atas valid, saya salah ketik di jalur saya. Jika Anda memiliki jalur yang menyertakan spasi, Anda dapat menyediakannya untuk saklar robocopy / log seperti:/log:"c:\path to a file\robocopy.log"

slm
sumber
Bekerja untukku. Apakah ini mungkin menunjukkan kesalahan yang lebih rinci di bagian atas?
Carko
Apakah Anda menjalankan perintah itu dalam konteks skrip alih-alih langsung di baris perintah. Mungkin ada hal lain yang menambahkan semacam pelarian?
Zoredache
Pesan kesalahan menunjukkan bahwa tanda kutip awal sebelum dan bukan setelah titik dua; Anda yakin perintah yang Anda coba jalankan seperti yang ditunjukkan?
Harry Johnston
Saya sangat menyesal, saya memiliki kesalahan ketik di jalan. Sangat malu. Terima kasih atas bantuan cepat semua orang! Apa prosedurnya, haruskah saya menghapus pertanyaan ini? Atau bisakah saya mengulanginya dan menambahkan jawaban yang menunjukkan bahwa Anda dapat memberikan tanda kutip di argumen ke / log beralih dari robocopy?
slm
Tidak ada alasan untuk menghapus @slm. Jika salah satu dari komentar di atas membantu Anda menemukan masalah, minta mereka untuk mempostingnya sebagai jawaban, dan kemudian tandai jawabannya dengan benar. Jika masalahnya adalah sesuatu yang sama sekali berbeda, tulis jawaban Anda sendiri dan tandai sebagai jawaban sehingga pencari masa depan akan tahu untuk memeriksa apakah mereka memiliki masalah yang sama.
music2myear

Jawaban:

11

Jika Anda perlu memberikan jalur yang menyertakan spasi ke sakelar / log robocopy Anda dapat melakukannya seperti ini:

/log:"c:\path to logs files\some log file.txt"
slm
sumber
Saya mendapatkan Kesalahan Tidak Valid: parameter # 11 "/ log". Saya menambahkannya di akhir perintah yang berfungsi.
Andrew S
Saya tidak lagi bekerja di mana saya mendukung windows jadi tidak punya cara untuk menguji ini.
slm
Pastikan direktori induk file log ada. Robocopy tidak akan membuatnya, dan, sayangnya, mengeluh tentang parameter cmdline jika dir tidak ada.
mojo
4

Ada empat cara logging sebagai dokumentasi Powershell

/log:<LogFile> : Menulis keluaran status ke file log (menimpa file log yang ada).

  • misalnya: robocopy "c:\a" "c:\b" /log:"c:\copy_log.log"

/log+:<LogFile> : Menulis output status ke file log (menambahkan output ke file log yang ada).

  • misalnya: robocopy "c:\a" "c:\b" /log+:"c:\copy_log.log"

/unilog:<LogFile> : Menulis keluaran status ke file log sebagai teks Unicode (menimpa file log yang ada).

  • misalnya: robocopy "c:\a" "c:\b" /unilog:"c:\copy_log.log"

/unilog+:<LogFile> : Menulis output status ke file log sebagai teks Unicode (menambahkan output ke file log yang ada).

  • misalnya: robocopy "c:\a" "c:\b" /unilog+:"c:\copy_log.log"

Untuk lebih jelasnya https://technet.microsoft.com/en-us/library/cc733145(v=ws.11).aspx

Nayana Adassuriya
sumber
Saya juga akan merekomendasikan untuk menambahkan /teeswitch karena itu juga menghasilkan output baris perintah dan memungkinkan pengguna untuk melihat kemajuan menyalin file di baris perintah juga.
vibs2006
1

Itu terjadi ketika membutuhkan hak admin / atau pop untuk membuat file ke direktori itu

Jadi cobalah untuk memiliki direktori log / temp dan cobalah untuk menambahkan file log ke direktori log itu

$ mkdir C:\log

misalnya:

$ robocopy "c:\a" "c:\b" /log:"c:\log\copy_log.log"
jaismeensandhu
sumber
0

Jika path ke file log berisi spasi atau beberapa pembatas skrip lainnya, harap sertakan dalam tanda kutip seperti yang disarankan oleh EDIT # 1 dan @slm. Tetapi juga, harap perhatikan penggunaan karakter pelarian seperti dijelaskan dalam dokumentasi ini tentang skrip Batch .

Alain
sumber
Saya mengalami masalah yang sama setelah migrasi Win 10 yang cukup berbahaya dan tidak diinginkan.
Marc