這指令名字很好記,跟【機器戰警】RoboCop 只差了一個字 XD。實際上這個指令從 Windows Vista 就開始內建了,其他 Windows 作業系統則要另外安裝微軟提供的套件才有。
先進入 “命令提示列” (command prompt)。為什麼台灣微軟要翻個這麼奇怪的名字?
$ 開始 → 執行 → cmd
輸入以下指令會顯示使用說明
robocopy /?
這個指令的格式是這樣的
Usage :: ROBOCOPY source destination [file [file]...] [options] source :: Source Directory (drive:\path or \\server\share\path). destination :: Destination Dir (drive:\path or \\server\share\path). file :: File(s) to copy (names/wildcards: default is "*.*").
各種參數的說明如下 (取自微軟官方說明文件):
:: :: Copy options : :: /S :: copy Subdirectories, but not empty ones. /E :: copy subdirectories, including Empty ones. /LEV:n :: only copy the top n LEVels of the source directory tree. /Z :: copy files in restartable mode. /B :: copy files in Backup mode. /ZB :: use restartable mode; if access denied use Backup mode. /EFSRAW :: copy all encrypted files in EFS RAW mode. /COPY:copyflag[s] :: what to COPY for files (default is /COPY:DAT). (copyflags : D=Data, A=Attributes, T=Timestamps). (S=Security=NTFS ACLs, O=Owner info, U=aUditing info). /DCOPY:T :: COPY Directory Timestamps. /SEC :: copy files with SECurity (equivalent to /COPY:DATS). /COPYALL :: COPY ALL file info (equivalent to /COPY:DATSOU). /NOCOPY :: COPY NO file info (useful with /PURGE). /SECFIX :: FIX file SECurity on all files, even skipped files. /TIMFIX :: FIX file TIMes on all files, even skipped files. /PURGE :: delete dest files/dirs that no longer exist in source. /MIR :: MIRror a directory tree (equivalent to /E plus /PURGE). /MOV :: MOVe files (delete from source after copying). /MOVE :: MOVE files AND dirs (delete from source after copying). /A+:[RASHCNET] :: add the given Attributes to copied files. /A-:[RASHCNET] :: remove the given Attributes from copied files. /CREATE :: CREATE directory tree and zero-length files only. /FAT :: create destination files using 8.3 FAT file names only. /256 :: turn off very long path (> 256 characters) support. /MON:n :: MONitor source; run again when more than n changes seen. /MOT:m :: MOnitor source; run again in m minutes Time, if changed. /RH:hhmm-hhmm :: Run Hours - times when new copies may be started. /PF :: check run hours on a Per File (not per pass) basis. /IPG:n :: Inter-Packet Gap (ms), to free bandwidth on slow lines. /SL :: copy symbolic links versus the target. /MT[:n] :: Do multi-threaded copies with n threads (default 8). n must be at least 1 and not greater than 128. This option is incompatible with the /IPG and /EFSRAW options. Redirect output using /LOG option for better performance. :: :: File Selection Options : :: /A :: copy only files with the Archive attribute set. /M :: copy only files with the Archive attribute and reset it. /IA:[RASHCNETO] :: Include only files with any of the given Attributes set. /XA:[RASHCNETO] :: eXclude files with any of the given Attributes set. /XF file [file]... :: eXclude Files matching given names/paths/wildcards. /XD dirs [dirs]... :: eXclude Directories matching given names/paths. /XC :: eXclude Changed files. /XN :: eXclude Newer files. /XO :: eXclude Older files. /XX :: eXclude eXtra files and directories. /XL :: eXclude Lonely files and directories. /IS :: Include Same files. /IT :: Include Tweaked files. /MAX:n :: MAXimum file size - exclude files bigger than n bytes. /MIN:n :: MINimum file size - exclude files smaller than n bytes. /MAXAGE:n :: MAXimum file AGE - exclude files older than n days/date. /MINAGE:n :: MINimum file AGE - exclude files newer than n days/date. /MAXLAD:n :: MAXimum Last Access Date - exclude files unused since n. /MINLAD:n :: MINimum Last Access Date - exclude files used since n. (If n < 1900 then n = n days, else n = YYYYMMDD date). /XJ :: eXclude Junction points. (normally included by default). /FFT :: assume FAT File Times (2-second granularity). /DST :: compensate for one-hour DST time differences. /XJD :: eXclude Junction points for Directories. /XJF :: eXclude Junction points for Files. :: :: Retry Options : :: /R:n :: number of Retries on failed copies: default 1 million. /W:n :: Wait time between retries: default is 30 seconds. /REG :: Save /R:n and /W:n in the Registry as default settings. /TBD :: wait for sharenames To Be Defined (retry error 67). :: :: Logging Options : :: /L :: List only - don't copy, timestamp or delete any files. /X :: report all eXtra files, not just those selected. /V :: produce Verbose output, showing skipped files. /TS :: include source file Time Stamps in the output. /FP :: include Full Pathname of files in the output. /BYTES :: Print sizes as bytes. /NS :: No Size - don't log file sizes. /NC :: No Class - don't log file classes. /NFL :: No File List - don't log file names. /NDL :: No Directory List - don't log directory names. /NP :: No Progress - don't display percentage copied. /ETA :: show Estimated Time of Arrival of copied files. /LOG:file :: output status to LOG file (overwrite existing log). /LOG+:file :: output status to LOG file (append to existing log). /UNILOG:file :: output status to LOG file as UNICODE (overwrite existing log). /UNILOG+:file :: output status to LOG file as UNICODE (append to existing log). /TEE :: output to console window, as well as the log file. /NJH :: No Job Header. /NJS :: No Job Summary. /UNICODE :: output status as UNICODE. :: :: Job Options : :: /JOB:jobname :: take parameters from the named JOB file. /SAVE:jobname :: SAVE parameters to the named job file /QUIT :: QUIT after processing command line (to view parameters). /NOSD :: NO Source Directory is specified. /NODD :: NO Destination Directory is specified. /IF :: Include the following Files.
雖然有使用說明,但實際上的操作還是要摸索一下才知道怎麼組合適當的參數。我的需求是把 硬碟 F: 的全部資料 (含資料夾與檔案) 複製到硬碟 J:,保留檔案時間,也不刪除 F: 上的資料。組合出來的參數如下:
robocopy F:\ J:\ /e /dcopy:t /xo /xa:sh /xj /unicode /eta /xd "$RECYCLE.BIN" "System Volume Information" "RECYCLER"
Windows 系列的指令沒有分大小寫,所以全部打小寫也沒關係。這些參數所代表的意義是這樣的…
F:\ :: 檔案來源 硬碟 F: J:\ :: 檔案目的地 硬碟 J: /e :: 複製所有的子資料夾,包含空的資料夾。 /dcopy:t :: 保留所有檔案與資料夾的時間戳記。 /xo :: 如果已有相同的檔案,且時間相同或較舊就跳過。注意是 "叉歐",不是 "叉零"。 /xa:sh :: 跳過屬性為 s (系統) 與 h (隱藏) 的檔案。因為是複製整個硬碟,預設 會連 Windows 隱藏的系統檔都複製過去,所以要排除。 /xj :: 跳過 NTFS junction 檔案,關於 junction 請參考這篇文章。 /unicode :: 畫面上的進度資訊以 unicode 顯示,若是操作非中文及英文檔名,這 參數可以正確顯示名稱。有無開啟並不影響檔案複製、移動等操作,只是差在畫面顯示 正不正確而已。 /eta :: 顯示預計完成時間。
ps. 這個指令跟其他的 dos / windows 指令不一樣的地方是檔案名稱並不是接在資料夾後面的,請參見本文最前面列出的指令格式。舉例來說,要複製 F:\MyDocuments 底下的 .txt、.bmp、.jpg 到 J:\backup,那指令要組合成…
robocopy F:\MyDocuments\ J:\backup\ *.txt *.bmp *.jpg
反過來說,如果不想複製這些檔案,要加上參數 /xf
robocopy F:\MyDocuments\ J:\backup\ /xf *.txt *.bmp *.jpg
大致上就是醬,這支指令能組合的參數變化還有非常非常多,是很實用的工具。
Leave a Reply Cancel reply