天天看點

随心所欲玩複制 詳解robocopy (二)

複制指定修改時間的檔案

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

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

這樣,不僅将所有檔案進行了複制,也删除了諸如隻讀、系統、隐藏等屬性,友善了我們在複制之後對檔案進行操作和編輯等。

     本文轉自melvillo 51CTO部落格,原文連結:http://blog.51cto.com/marui/297397,如需轉載請自行聯系原作者

繼續閱讀