日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

robocopy命令用法實例解析_DOS/BAT

更新時間: 2022-12-03 編程語言

實例一:文件,想怎么復制就怎么復制

[實現(xiàn)效果]隨時將源文件夾中的純文本(TXT)、Word文檔(DOC)還有BMP、TIF圖像文件復制到目標文件夾中
,這是在“資源管理器”中直接拖放所做不到的。[簡單命令]

robocopy d:\work e:\back *.txt *.doc *.bmp *.tif /s

[參數(shù)講解]
  將d:\work文件下的TXT、DOC、BMP、TIF復制到e:\back文件夾,其他文件則不復制。/s是表示包括
除空文件下的所有子目錄,如果沒有則僅復制d:\work下的文件而不包括子目錄。
[舉一反三]
(1)如果要將文件夾下的所有文件包括空文件夾全部復制到目標文件夾,命令為:robocopy
d:\work e:\back /e
  /e表示復制所有子目錄包括空文件夾。
(2)如果只想復制兩個層級內(nèi)的文件(再下的層級里的文件則不拷貝),輸入命令:robocopy
d:\work e:\back /e /lev:2
  /lev:2表示復制的層級,比如指定層級后d:\work\soft(二級)下的文件會被復制,而
d:\work\soft\office(***)下的文件則不被復制。

實例二:垃圾文件不復制

[實現(xiàn)效果]在備份數(shù)據(jù)時,不可避免會將類似于*.bak、*.tmp的垃圾文件也復制到目標文件夾,用
Robocopy可以將我們經(jīng)常碰到的垃圾文件在拷貝時就清理出家門,從而生成一個干干凈凈的文件夾。
[簡單命令]

robocopy d:\work e:\back /e /xf *.tmp *.bak

[參數(shù)講解]/xf為指定不執(zhí)行復制操作的文件類型,后面的文件名支持通配符。如果參數(shù)為/xd,則表示排除后
面指定的文件夾。

實例三:大文件 我不要

[實現(xiàn)效果]復制的時候,為了節(jié)省時間,需要將一些大文件暫時不拷貝,等有空閑時間時,再執(zhí)行復制操作不
遲。

[簡單命令]

robocopy d:\work e:\back /e /max:6000000

[參數(shù)講解]僅復制不大于6000000bytes的文件,/max:后直接接數(shù)值,數(shù)值單位為byte。如果是/min:1000,則
復制不小于1000bytes的文件。兩個參數(shù)可以同時使用,界定復制文件大小的范圍。
實例四:只要這一周修改的文件

[實現(xiàn)效果]這一周處理了哪些文檔?編輯了那些文件?將這些修改了的文檔復制到一個文件夾下,再好好回味
一下。本例就是要將d:\work中最近七天內(nèi)新建或修改了的TXT、DOC、XLS、PPT等文檔,復制到e:\look
目錄下。

[簡單命令]

robocopy d:\work e:\look /s *.txt *.doc *.xls *.ppt /maxage:7

[參數(shù)講解]/maxage:表示最遠修改時間的,修改時間比這個還要舊的文件將不會被復制。/maxage:后可接數(shù)字
,也可以接日期,數(shù)字小于1900時表示天數(shù),否則就得用YYYYMMDD來表示具體的日期
   如/maxage:20040210表示2004年2月10日后被修改的文件才允許復制。與之相對應的參數(shù)
是/minage,表示最近修改時間,比這個時間新的文件將不被復制。

[舉一反三]

robocopy d:\work e:\look /s *.txt *.doc *.xls *.ppt /maxage:7 /minage:1

則表示近七天內(nèi)除今天外修改的文件才允許被復制。
  與修改時間相對的還有最近訪問時間,/maxage指最遠訪問時間,比這個時間老的文件將不被復制。
/minage是指最近訪問時間,比這個時間新的文件將不被復制。

實例五:我的文檔排排站

[實現(xiàn)效果]
  上例中復制時,所有的文檔都會帶來本身的路徑信息,文檔是會將其所存放的文件夾也復制過來。
這給我們的翻閱查看帶來很多不便,得單擊多層文件夾才能看到文件,能不能將所有的文檔直接復制到
一個文件夾下呢?這個需要用XXCOPY來實現(xiàn)。

[簡單命令] 

xxcopy d:\work e:\look /s /in*.txt /in*.doc /sg /yy /da:2004-02-02 /DB:2004-02-10/DA:1997-01-01

[參數(shù)講解]
  此命令將d:\work中從2004年2月2日到2月10生成的 TXT、DOC文件全部直接復制到e:\look目錄下,
不新建子文件夾,打開e:\look就能看到所有文件。XXCOPY和Robocopy的語法參數(shù)還是有較大差異的,表
示指定文件類型時,XXCOPY會用/in*.*,表示日期時/da為在指定時間后,/db為在指定時間前,日期的
表示為YYYY- MM-DD。
  另外,/sg表示復制文件到同一文件夾,/yy表示在所有要求用戶應答的地方都自動認為是Yes,在執(zhí)
行過程中不需要用戶干預。

實例六:完全克隆

[實現(xiàn)效果]
  我們一般采取的復制方式默認是增量復制,即根據(jù)文件的大小、修改時間將源文件夾里的內(nèi)容向目
標文件夾復制,久而久之,目標文件夾里就可能存在大量源件夾里早已經(jīng)刪除且無用的文件和文件夾。
如果要讓備份完全相同,即拷貝時刪除在目標文件夾里存在但源文件夾里并沒有的文件。
[簡單命令]

robcopy d:\work e:\look /mir

[參數(shù)講解]
  /mir的作用等同于/purge /e,/purge表示清理目標文件夾有而源文件夾里沒有的文件(夾)。通過
這個命令,能保證源文件夾和目標文件夾結(jié)構(gòu)與文件完全相同。這在創(chuàng)建鏡像備份時,非常有用。

實例七:移動文件

[實現(xiàn)效果]
我們前面講的都是復制,如果我們要將文件夾移動到目標文件夾,如何操作呢?
[簡單命令]

robocopy d:\work e:\look /move /e

[參數(shù)講解]
  其中,/move表示移動。

實例八:我只要文件夾骨架

[實現(xiàn)效果]
  筆者的工作需要周期性地新建和整理大量的文件夾,每次的文件夾結(jié)構(gòu)一樣,只是文件不盡相同。
如果是以前,就得一個一個簡單重復去制作,而現(xiàn)在就不需要了。Robocopy和XXCOPY可以讓你輕松實現(xiàn)
復制文件夾結(jié)構(gòu)。
  [簡單命令]

xxcopy d:\work e:\mystruct /t /yy /dl3

[參數(shù)講解]
  將d:\work的三層文件夾結(jié)構(gòu)復制到e:\mystruct中。其中/t表示創(chuàng)建文件夾結(jié)構(gòu),/dl3表示復制的
文件夾結(jié)構(gòu)為***,數(shù)字可以自行輸入,如果沒有此參數(shù),默認建立整個文件夾結(jié)構(gòu)。
  Robocopy創(chuàng)建文件夾相對要麻煩一些,/create參數(shù)不僅要創(chuàng)建結(jié)構(gòu),還要創(chuàng)建文件夾下所有文件的
0字節(jié)文件,并非真正的結(jié)構(gòu),我們只好劍走偏鋒了。

robocopy d:\work e:\mystruct /e /lev:3 /minage:19000101

為Robocopy指定一個不可能創(chuàng)建文件的時間,因為有參數(shù)/e 的作用,雖然沒有文件符合要求(你機
器里沒有早于1900年1月1日的文件),但Robocopy還是會忠實地創(chuàng)建文件夾,這樣就達到了生成文件夾
結(jié)構(gòu)的目的。另外,/lev:3表示復制文件夾的層級,同樣可以自行輸入。

實例九:隱藏文件我不要

[實現(xiàn)效果]
  在默認狀態(tài)下,隱藏文件是并不顯示的,但在復制的過程中,它還會隨著文件夾一起被復制。可不
可以將這些隱藏文件排除在復制范圍之外呢?
  [簡單命令]

robocopy d:\work e:\back /e /xa:h

[參數(shù)講解]
  Robocopy支持對屬性進行操作。上面的命令將復制源文件夾中全部文件,但全部具有隱藏屬性的文
件將不會被復制。/xa:h,表示將具有隱藏屬性的排除出復制范圍,與之相對應的是/ia,表示包括只對
擁有指定屬性的執(zhí)行操作。屬性有R:只讀,A:存檔,S:系統(tǒng),H:隱藏等幾種供選擇。
  [舉一反三]
  (1)此外,Robocopy還有/a+、/a-等參數(shù)對文件屬性進行操作,分別表示在文件被拷貝后為文件添
加、去除某屬性。

robocopy d:\work e:\back /ia:rs  

表示只復制具有只讀和系統(tǒng)屬性的文件。
(2)robocopy c: d: /-a:rsh
  表示將文件拷貝到D盤后,將拷貝生成的文件的只讀、系統(tǒng)、隱藏屬性去掉,以方便查看和修改。

實例十:NTFS權限跟著走

[實現(xiàn)效果]
在使用Windows 2000、Windows XP時,在多用戶使用一臺電腦時或管理服務器時,經(jīng)常要為文件夾
指定用戶訪問和修改的權限(如圖1,需要分區(qū)為NTFS)。不過,用一般的復制方式無法保留我們設置的
權限,這在服務器備份時意味著我們得重新設置用戶權限。不過,Robocopy可以讓我們在復制文件的時
候,將屬性、用戶權限、所有者都可以一并復制到目標文件夾中。

備份雙友鄰精彩5例-Robocopy和xxcopy全掌握
  [簡單命令]

robocopy d:\work e:\back /e /copyall

[參數(shù)講解]
  /copyall等于/copy:datsou,表示將所有源文件夾的信息復制到目標文件夾中,其中D:文件數(shù)據(jù),
A:文件屬性,T:時間信息,S:權限信息,O:所有者信息,U:審核信息。
  [舉一反三]
  如果源文件夾的權限被修改,需要同樣更新目標文件夾的權限時,我們不必再重復復制,只需輸入

robocopy d:\work e:\back /is /copy:sou

如果沒有/copy參數(shù),默認為/copy:dat,沒有后面三項的信息。

實例十一:集中備份到文件服務器

  [實現(xiàn)效果]
  希望每天能夠把相應數(shù)據(jù)備份到文件服務器上,以免數(shù)據(jù)丟失。
  [簡單命令]

robocopy d:\work \ctips_serverarticlesshare ?/e /copyall

[參數(shù)講解]
從中可以看出,robocopy完全支持文件服務器共享文件夾數(shù)據(jù)的拷貝。
[舉一反三]

(1)如果我們創(chuàng)建了一個環(huán)境變量,如定義%databack%為\ctips_serverarticles\back,那只要輸
入相應的命令:robocopy d:\work ?%databack% /e /copyall 即可把d:\work下的文件全部備份到
\ctips_serverarticles\back下。當然,如果\ctips_serverarticles\back空間不夠時,只要更換環(huán)境
變量的值到其他文件夾,如\ctips_serverarticles ewback,上述命令無需更改就可以反數(shù)據(jù)拷貝到新
的文件夾中。
(2)如果你只想把數(shù)據(jù)備份到共享文件夾中以你的機器名為名字的共享文件夾中,使用xxcopy會更
方便:xxcopy d:\work ?\ctips_serverarticles/$HOST$ /e /yy 其中/$HOST$表示你的機器名,如你的
機器名為CTIPS_SYJ,那會把d:\work 文件夾下的文件拷貝到\ctips_serverarticles\CTIPS_SYJ文件夾
下。如果你的機器名為CTIPS_MLB,那執(zhí)行上述命令后就可以把d:\work 文件夾下的文件拷貝到
\ctips_serverarticles\CTIPS_MLB文件夾下。由于同局域網(wǎng)內(nèi)的機器名字不會相同,執(zhí)行上述命令后就
可以保證數(shù)據(jù)不會被拷貝到同一文件夾下。

實例十二:一動就備份

  [實現(xiàn)效果]
  有些工作內(nèi)容非常重要,需要時時刻刻注意備份,可是我們哪里有這么好記性和耐性呢?這事,還
是交給 Robocopy來做吧。Robocopy能時時監(jiān)視要備份的文件夾,只要文件夾修改到一定時間和程序,
Robocopy就會立即開始備份。它會一直監(jiān)視文件夾,除非用戶自己終止。
  [簡單命令]

robocopy d:\work e:\back ?/e /copyall /mot:1 /mon:2

[參數(shù)講解]
  上述命令表示復制文件夾所有信息到目標文件夾并進行監(jiān)視。執(zhí)行此命令后,命令提示符窗口如圖2
所示。一旦時間過了一分鐘,并且源文件夾至少有或2處以上的修改,Robocopy就會自動啟動另一個進程
,執(zhí)行上述備份操作。Robocopy能監(jiān)視源文件夾結(jié)構(gòu)、文件和文件夾名稱、大小、最后修改時間,在這
里,甚至連屬性和權限等信息被修改時,Robocopy也會記為修改次數(shù)。
備份雙友鄰精彩5例-Robocopy和xxcopy全掌握
  /mot后接的是時間(分鐘),是指Robocopy執(zhí)行操作的最短時間;/mon后接的是最少文件修改個數(shù)
。在監(jiān)視過程中,會自動記錄時間和修改的次數(shù),只有同時符合以上兩個條件時,Robocopy才開始執(zhí)行
,執(zhí)行完成后,這兩個數(shù)據(jù)會自動清零,并重新開始監(jiān)視文件夾,除非用戶關閉命令提示符窗口或按下
Ctrl+Break鍵。
  [舉一反三]
  如果你要開機就監(jiān)視并備份相應文件夾,則可以把上述命令放到“啟動”組中。

實例十三:不到時間不備份

[實現(xiàn)效果]
  復制的過程總會占用系統(tǒng)資源,如果能設置在自己不在電腦邊上的時候開始復制備份,就會方便得
多。比如,每天5:50下班,希望下班后,到達6點時,Robocopy自動開始備份相應數(shù)據(jù)。
  [簡單命令]

robocopy d:\work e:\back /e /rh:1800-1830

[舉一反三]
  運行后,復制操作將會等待至指定時間開始(如圖3)。其中,RH格式為/RH:hhmm-hhmm,指定
Robocopy開始的時間段,在這個時間段外,拷貝會被暫停。時間為24小時格式,4個數(shù)字長,從0000到
2359,而且兩個數(shù)字不能相同。
備份雙友鄰精彩5例-Robocopy和xxcopy全掌握

實例十四:計劃任務備份

以上的到時間備份、監(jiān)視文件夾備份方式,每次重啟系統(tǒng)會都會要重新執(zhí)行以上命令,還遠遠不夠
智能,如果能和Windows的計劃任務配合,所有問題就迎刃而解了。以我們要在每天10:00自動調(diào)用
Robocopy開始監(jiān)視備份文件夾為例,說一說計劃任務與Robocopy的攜手。
第一步:新建BAT文件
新建一個批處理文件autobak.bat,輸入如下命令
robocopy d:\work e:\back ?/e /copyall ?/mot:1 /mon:2
第二步:創(chuàng)建計劃任務
選擇“開始→設置→控制面板”,雙擊“任務計劃”圖標。把autobak.bat批處理文件拖放到“任務計劃
”窗口,然后雙擊新生成的autobak.bat圖標,在彈出窗口中設置其屬性。
第三步:設置開始時間
切換到“日程安排”標簽,單擊“任務計劃”下拉列表框,從中選擇“每天”,“開始時間”設置為
10:00,單擊“高級”可以設置起止的日期(如圖4)。
通過上述設置后,到了設置的時間,機器就會自動備份執(zhí)行批處理文件,自動備份并監(jiān)視文件夾。
備份雙友鄰精彩5例-Robocopy和xxcopy全掌握

實例十五:清理文件也拿手

除了一般的復制功能,XXCOPY還有文件清理功能,可以將不需要的文件快速清理出硬盤。以下命令
會清除文件和文件夾,請先建立測試文件夾掌握其操作后再對文件夾進行操作。
1.清除所有無用文件
xxcopy ?d:\work*.tmp /s /h /yy /rs
/rs表示不復制而直接從源文件夾中刪除指定文件,/h表示指定隱藏和系統(tǒng)文件。
2.清除文件夾
xxcopy ?c: emp /rmdir /db:2002-01-01 /yy
刪除c: emp中在2002年1月1日前的修改的文件夾。
3.刪除空文件夾
xxcopy c: emp ?/rmdir /sz:0 /yy
刪除c: emp下所有空文件夾,/sz:0指定大小為0的文件(夾)。
4.刪除0字節(jié)文件
xxcopy c: emp*.* ?/sz:0 /s /h /yy /rs
通過以上四種方式的組合,我們可以輕松實現(xiàn)對文件及文件夾的整理工作。
最后,還有一幾個小技巧告訴你,希望能有利于你更好地使用XXCOPY和Robocopy。
★將命令變成任務
在Robocopy加上“/save:任務名”可以將當前操作記錄為任務文件,通過“/job:任務名”就可以方便調(diào)
用,不需要再輸入一長串的命令了。此任務文件可以用純文本編輯器(如記事本)來編輯。
★將復制備份過程錄下來
默認情況下,Robocopy的操作過程只是在命令提示符中顯示,我們可以讓它把操作過程輸出為TXT文件,
加上“/log:文件名.txt”即可。 ?

個人使用實例代碼

同步備份

自己做了個同步備份本地文件的腳本,每天使用定時計劃任務執(zhí)行

版本一:備份到指定文件夾

@echo off
cls
rem 源文件夾和目標文件夾的路徑不能以斜線結(jié)尾“\”
set sourceDir="D:\_John個人文檔"
set destinationDirs="E:\_Del\2\_John個人文檔"
set logFile=%0_log.txt


robocopy %sourceDir% %destinationDirs% /MIR /LOG+:%logFile%

版本二:同一源備份到多個目標文件夾

@echo off
cls
rem 源文件夾和目標文件夾的路徑不能以斜線結(jié)尾“\”
set sourceDir="D:\_John個人文檔"
rem 目標文件夾可以指定多個,多個之間使用逗號分隔
rem 路徑中包括空格時,使用雙引號括起來。
set destinationDirs="E:\_Del\1\_John個人文檔"
set destinationDirs="E:\_Del\2\_John個人文檔","E:\_Del\3\_John個人文檔"
set logFile=%0_log.txt
echo [%date% %time%] 初始化日志>%logFile%
echo,>>%logFile%
echo 日志已初始化:%logFile% & echo,

::robocopy %sourceDir% %destinationDirs% /MIR /LOG+:%logFile%
for %%a in (%destinationDirs%) do (
    echo   開始同步,從 %sourceDir% 到 %%a
    echo 開始同步,從 %sourceDir% 到 %%a >>%logFile%
    robocopy %sourceDir% %%a /MIR /LOG+:%logFile%
    echo,
)

查找最近3天所有新增和修改過的文件

把以下內(nèi)容保存為roboCopyTest.bat文件

rem 查找最近3天所有新增和修改過的文件
robocopy d:\ E:\_Del\robocopy_Project /maxage:3 /minage:0 /L /BYTES /fp /ts /s /ndl 
::/log:E:\_Del\robocopy_Project_Log.csv & type E:\_Del\robocopy_Project_Log.csv

或者在執(zhí)行bat的時候如下:

roboCopyTest.bat >e:\_del\robocopy_Project_Log.csv & type e:\_del\robocopy_Project_Log.csv

備份文件,并排除指定文件和文件夾

@echo off&setlocal enabledelayedexpansion
Title 目錄自動同步程序
cls

rem 源文件夾和目標文件夾的路徑不能以斜線結(jié)尾“\”
set sourceDir="D:\_John個人文檔"
set sourceDir="D:\_john\LocalSvn"
rem 目標文件夾可以指定多個,多個之間使用逗號分隔
rem 路徑中包括空格時,使用雙引號括起來。
set destinationDirs="E:\_Del\1\_John個人文檔"
set destinationDirs="E:\_Del\2\_John個人文檔","E:\_Del\3\_John個人文檔"
set destinationDirs="C:\TmpTest\Disk500G2\CaresBack\Cares-bak20220401_R\LocalSvn"
set destinationDirs="\\192.168.1.60\disk500G2\CaresBack\Cares-bak20220401\LocalSvn"

set logFile="%~0_log.txt"
echo [%date% %time%] 初始化日志,由 %0 程序?qū)懭?gt;%logFile%
echo,>>%logFile%
echo 日志已初始化:%logFile%&echo,

rem robocopy命令常用參數(shù),以及是否把日志寫入文件等
set para=/MIR /COPY:D /W:3 /XF *.tmp *.class /XD .vs .git .github .svn packages obj bin BackupTemp .idea 
::set para=%para% /LOG+:%logFile%

::robocopy %sourceDir% %destinationDirs% /MIR /LOG+:%logFile%
for %%a in (%destinationDirs%) do (
    echo [!date! !time!] 開始同步,從 %sourceDir% 到 %%a
    echo [!date! !time!] 開始同步,從 %sourceDir% 到 %%a >>%logFile%
    robocopy %sourceDir% %%a %para%
    echo,&echo,[!date! !time!] 完成同步,從 %sourceDir% 到 %%a
    echo,[!date! !time!] 完成同步,從 %sourceDir% 到 %%a >>%logFile%&echo,>>%logFile%
    echo,&echo,------------------------&echo,
)
pause
欄目分類
最近更新