Bagaimana cara membuat robocopy diam di baris perintah kecuali untuk kemajuan?

105

Saya menggunakan robocopy untuk melakukan backup dengan skrip PowerShell, dan itu cukup mengagumkan, kecuali bahwa saya hanya ingin menampilkan persentase kemajuan sementara itu menyalin dan tidak semua informasi lainnya.

Informasi lainnya mengacaukan jendela perintah, yang akan saya bersihkan dan sederhana sehingga mudah untuk melihat keseluruhan kemajuan pencadangan.

Apakah ini mungkin?

Terima kasih, Andrew

AndyGeek
sumber

Jawaban:

192

Saya menambahkan 2 parameter berikut: /np /nfl

Jadi bersama-sama dengan 5 parameter dari AndyGeek'sjawaban, mana yang /njh /njs /ndl /nc /nsAnda dapatkan sebagai berikut dan diam:

ROBOCOPY [source] [target] /NFL /NDL /NJH /NJS /nc /ns /np

/NFL : No File List - don't log file names.
/NDL : No Directory List - don't log directory names.
/NJH : No Job Header.
/NJS : No Job Summary.
/NP  : No Progress - don't display percentage copied.
/NS  : No Size - don't log file sizes.
/NC  : No Class - don't log file classes.
R. Koene
sumber
2
Masih ada pesan "100%" yang ditampilkan.
Scott Chu
13
Ini masih mencetak satu baris kosong yang terlihat di file batch.
wqw
7
/nc /nstidak diperlukan saat /nfl /ndlditentukan.
Vojtěch Dohnal
3
@wqw, tambahkan a> NUL di EOL, dan baris kosong adalah history.
Ramuan
2
@ScottChu Ini mencetak 100% saat Anda menggunakan sakelar / mt. Saya kira Anda harus memutuskan apakah Anda ingin multithread, atau tidak ada% s yang ditampilkan
Loaf
40

Saya melakukannya dengan menggunakan opsi berikut:

/njh /njs /ndl /nc /ns

Perhatikan bahwa nama file masih ditampilkan, tetapi tidak masalah bagi saya.

Untuk informasi lebih lanjut tentang robocopy, kunjungi http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx

AndyGeek
sumber
3
/ nfl untuk menyembunyikan nama file
xagyg
12
Muncul jika Anda menggunakan /miratau /purgefile ekstra masih login. Tidak dapat menemukan cara untuk mematikannya.
bbodenmiller
1
perhatikan bahwa dengan robocopy bilah kemajuan hanya% per file, tidak menunjukkan kemajuan dengan jumlah keseluruhan byte yang disalin dari total /% itu.
barlop
Apresiasi @bodenmiller yang sangat menarik ... Sangat mengganggu logging file ini ...
toscanelli
18

Jika Anda tidak menginginkan keluaran sama sekali, ini adalah cara paling sederhana:

robocopy src dest > nul

Jika Anda masih memerlukan beberapa informasi dan hanya ingin menghapus bagian dari output, gunakan parameter dari R.Koene'sanswer.

SHernandez
sumber
5
Saya menguji di > log:nulbawah win8.1 x64, ada file log kosong. > nulbekerja seperti yang diharapkan.
Ivan Yan
1
File "kosong" yang logdihasilkan ini bahkan tidak benar-benar kosong. Ini hanya menyimpan data ke aliran alternatif yang tidak terlihat oleh Explorer, tetapi masih banyak yang ada di disk. (Anda dapat memeriksa dengan menggunakan dir /rperintah untuk menampilkannya.) @IvanYan benar, > nuladalah perintah yang benar untuk membuang keluaran seluruhnya.
jmbpiano
16

Di PowerShell, saya suka menggunakan:

robocopy src dest | Out-Null

Ini menghindari keharusan untuk mengingat semua saklar baris perintah.

Aaron Tribou
sumber
Saat melakukan ini, itu segera mematikan perintah tanpa peringatan. Saya menggunakan /PURGE.
Sawtaytoes
Out-Null seharusnya tidak berpengaruh pada eksekusi perintah robocopy. Ini hanya mengarahkan aliran keluaran. msdn.microsoft.com/en-us/powershell/reference/4.0/… Anda dapat mencoba menghapus Out-Null untuk melihat apakah keluaran yang dibuang memberikan petunjuk apa pun tentang apa yang terjadi.
Aaron Tribou
2

Solusinya, jika Anda ingin benar-benar tidak bersuara, adalah mengarahkan output ke file (dan secara opsional menghapusnya nanti).

Robocopy src dest > output.log
del output.log
HSM
sumber
6
juga> NUL hanya membuang output, tidak ada file yang perlu dikhawatirkan.
Sellorio
1
atau pipa ke Out-Nulldi PowerShell
orad
2

robocopy juga cenderung mencetak garis-garis kosong meskipun tidak melakukan apapun. Saya memfilter baris kosong menggunakan perintah seperti ini:

robocopy /NDL /NJH /NJS /NP /NS /NC %fromDir% %toDir% %filenames% | findstr /r /v "^$"
TarmoPikaro
sumber
0

> Null tidak berfungsi dalam tanda kutip. Ia melihat> null sebagai nama file batch.

Robocopy tidak ada output yang berfungsi !!!

Ini adalah file batch baru:

robocopy /mir /B /r:1 /nfl /ndl /njh /njs /nc /ns /np c:\EnvBackup c:\offsite_backup\EnvBackup

robocopy /mir /B /r:1 /nfl /ndl /njh /njs /nc /ns /np c:\shares c:\offsite_backup\shares

robocopy /mir /B /r:1 /nfl /ndl /njh /njs /nc /ns /np c:\Quickbooks_Backup c:\offsite_backup\Quickbooks_Backup
Jason L.
sumber
-1

Tidak perlu mengalihkan ke file dan menghapusnya nanti. Mencoba:

Robocopy src dest > null 
areB
sumber
2
Ini membuat file nulldan menulis log ke dalamnya. Ini menenangkannya di baris perintah dengan biaya penulisan drive penyimpanan.
Sawtaytoes