Robocopy(Windows可靠文件複製命令)詳解

(轉載此文以作備忘)

說實話,Windows系統自帶的複製功能不僅功能簡單,而且定製性也不強,每每在對大量文件進行復制、移動、備份時,總少不了繁雜往復的操作。不過幸好,微軟意識到了這一點,爲我們提供了一款很強力的複製備份工具:robocopy。

robocopy已被Windows Vista、Windows 7以及Windows Server 2008所集成,網上有網友製作的GUI,有興趣的童鞋可以下載嘗試一下。另外,還在使用xp的童鞋直接在網上下載robocopy GUI吧。

robocopy GUI下載地址:http://www.brothersoft.com/robocopy-gui-105335.html

運行方法有很多種,可以使用Win+R,在“運行”窗口中直接輸入命令;或者先啓動CMD命令提示符,在命令提示符窗口中輸入命令;另外一種則是在文本編輯器(如:記事本)中輸入相應命令,保存爲*.bat批處理文件雙擊運行即可。

推薦使用批處理文件,這樣子不僅方便了我們保存和修改,還方便了隨時隨地進行調用。

廢話不多說,下面我們就開始實戰練習。


天一早,經理從Boss那裏得到一個任務,說是公司要對一個項目製作一些文檔,需要這個項目的一些原始資料。於是,這個任務又從經理那裏下派到我手上,按他的要求,需要儘可能快的從有關文件夾中取出合適的內容,並且複製到他U盤(盤符爲H)Project文件夾中。其具體要求是整理出:txt文本文件、Word文檔、JPG、BMP、TIF圖像。他倒是說得簡單,我面對的可是一個有上百個子文件夾至少5層目錄結構的超級複雜文件目錄樹。

好吧,爲了能順利完成,放第一招:

第一招 我想咋複製就咋複製

robocopy D:\Document H:\Project *.txt *.doc *.jpg *.bmp *.tif /s 

說明:

參數"/s"的作用是“除了空文件夾以外的所有子目錄”。若要將文件夾下的所有文件(包括空文件夾)全部複製到目標文件夾,則上述命令應改爲:

robocopy D:\Document E:\Home /e 

此處參數"/e"的表示所有子目錄(包括空文件夾)。


一個任務很順利就完成,經理把我叫到辦公室,對我的執行效率表示出非常滿意,我長出一口氣,氣剛出到一半,經理就開口了:“還要做個項目概覽,你去把一二級目錄下的內容再單獨整理出來,還拷貝到我的U盤裏。”我暈……

剛纔小試牛刀,現在見招拆招,放第二招:

第二招 複製文件隨心所欲

robocopy D:\Document H:\Project *.txt *.doc *.jpg *.bmp *.tif /s /lev:2

說明:

參數"/lev"表示複製的層級,比如指定爲2級,則兩層目錄下的文件會被複制,更多級下面的則會被忽略。


過一番折騰,經理對我的滿意度算是越來越高了,但對於他而言,總是有解決不盡、也永遠搞不清的問題,諸如他會在家選擇文件之後按下Ctrl+C,然後第二天來公司在公司電腦上猛按Crtl+V。哎,這不,他又有新問題了。經過剛纔幾次複製,他那弱小的U盤已經經不起更多折騰,肚子塞的滿滿的,可是還有大批文件需要用U盤拷貝,經理他就撓着頭,想啊想,想啊想,終於想出一個辦法來,先把不用的文件拷貝到計算機上,再把垃圾文件刪除掉!嗯~還真是個好辦法,於是乎,他又叫來了我……

同樣,怕什麼~~~接着放招:

第三招 垃圾文件我可不要

其實實現這個要求很簡單,直接在複製的過程中篩選出垃圾文件並且deny掉就好啦~

用如下命令吧:

robocopy H:\Work D:\Work /e /xf *.tmp *.bak 

說明:

參數"/xf"意爲指定不執行復制操作的文件類型,文件名支持通配符。如果使用參數"/xd",則表示排除指定的文件夾。


一項任務順利完成,我哼着小曲回到了自己的辦公室,安安穩穩的坐在椅子上聽起音樂。一個上午連續被經理所讚賞,那心情叫一個好啊,索性就用音箱吧~動人的旋律不僅飄到我耳朵裏,也到了隔壁同事耳朵裏,這不,隔壁同事又來了,他表示對我藝術審美很是讚賞,同時,還想拷走我所有音樂文件……

天,我的音樂文件夾有好幾個G之大,而他拿來的U盤纔有碎碎的2G,這可怎麼是好呢~

想來想去,他覺得只好忍痛割愛,不要MV了。只是還有一個問題,如果用文件類型排除,那將非常麻煩,在這種情況下,我選擇了以下方法:

第四招 大文件我也不要

robocopy F:\music H:\music /e /max:10000000 

說明:

使用參數"/max",可以選擇文件大小上限,其單位爲byte。如果是"/min",限定了文件大小的下限。兩個參數可以同時使用,限制出所需複製的文件大小的範圍。

複製指定修改時間的文件

在日常使用中,免不了要通過文件修改時間篩選出最近的文件。如何實現此功能?通過下列命令:

robocopy D:\Document H:\Project /maxage:5 

此條命令的意思爲將D:Document下修改時間在5天內的文件複製到H:Project下。

參數"/maxage"表示距離今天最遠的修改時間,凡是修改時間比這個限制還要早的那些文件都不會被複制。參數"/maxage"可以接受的字符有數字,或者是日期,表示天數時數字要小於1900,表示日期時需要使用"YYYYMMDD"格式。另外一個與之相對應的參數是"/minage",表示距離今天最近的修改時間限制,比這個時間新的文件將不被複制。

因此,我們在實用環境下可以利用"/maxage"和"/minage"來共同限制時間範圍。如下例:

robocopy D:\Document H:\Project /maxage:5 /minage:1

此命令則將欲複製的文件範圍限定在修改時間在除今天意外的5天以內(是不是有點繞口……我實在描述不清楚了,各位看官請意會吧)。

完全拷貝

在Windows默認的複製粘貼下,如果已存在一個同名文件夾,系統會進行增量複製,而不會進行文件夾的替換操作。如果我們需要使目標文件夾與源文件夾完全相同,也就是說在複製的同時也刪除在目標文件夾裏存在但源文件夾裏並沒有的文件。則需要使用以下命令:

robocopy D:\Document H:\Project /mir

參數"/mir"的作用等同於"/purge /e","/purge"表示清理目標文件夾內有而源文件夾裏沒有的文件和文件夾。通過這個命令,能保證源文件夾和目標文件夾在結構與內容上完全相同。此參數對於創建鏡像備份時是非常有用的。

移動文件

需要移動文件夾,也就是剪貼,需要使用另外兩個參數,先看下例:

robocopy D:\Document H:\Project /move /e

參數"/move"意爲移動,而"/e"則表示複製所有子目錄包括空文件夾(這一點上篇文章有講)。

只拷貝文檔結構

有時我們只需要拷貝一個多級目錄的目錄樹,或者說只需要它的結構,而不需要它的內容,參考如下命令:

robocopy c:\windows /s /create c:\empty\windows

這樣,我們就創建了整個Windows文件夾的目錄結構。其中,使用了"/creat"參數,此參數作用即爲生成空的文件結構。

還有另外一種劍走偏鋒的實現方法:

robocopy c:\windows c:\empty\windows /e /lev:5 /minage:19000101

這是使用了普通的複製方法,指定5層目錄,但是卻限制了一個機器上不可能有的一個文件修改日期。這樣,robocopy就只會拷貝走目錄結構,因無文件符合其修改時間限制,因而不會有文件被複制。

不復制隱藏文件

個別情況下文件夾中存在隱私內容,在複製的同時又希望被ignore,因爲robocopy支持屬性操作,所以只需調用相關參數即可。見下例:

robocopy D:\Photo H:\Photo /e /xa:h

參數"/xa:h"表示將具有隱藏屬性的排除出欲複製的範圍,與之相對應的是參數"/ia",表示只複製包括指定屬性的文件。

可用的屬性有;R只讀、A存檔、S系統、H隱藏等。

robocopy C:\windows F:\WindowsSysFile /ia:rs

此命令只會將具有隻讀屬性的系統文件複製,而不會操作其他文件。

上文說道,robocopy具有對屬性操作的能力,因此,在複製的同時也可以指定文件屬性。

使用參數"/A+"與"/A-",功能分別是將給定的屬性添加到複製文件,以及,從複製文件中刪除給定的屬性。

例如:

robocopy C:\windows F:\WindowsSysFile /e /A-:rsh

這樣,不僅將所有文件進行了複製,也刪除了諸如只讀、系統、隱藏等屬性,方便了我們在複製之後對文件進行操作和編輯等。


原文來自於Lex cnblogs

發佈了165 篇原創文章 · 獲贊 151 · 訪問量 148萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章