Robocopy(Windows可靠⽂件复制命令)详解
(转载此⽂以作备忘)
说实话,Windows系统⾃带的复制功能不仅功能简单,⽽且定制性也不强,每每在对⼤量⽂件进⾏复制、移动、备份时,总少不了繁杂往复的操作。不过幸好,微软意识到了这⼀点,为我们提供了⼀款很强⼒的复制备份⼯具:robocopy。
robocopy已被Windows Vista、Windows 7以及Windows Server 2008所集成,⽹上有⽹友制作的GUI,有兴趣的童鞋可以下载尝试⼀下。另外,还在使⽤xp的童鞋直接在⽹上下载robocopy GUI吧。
桃的拼音
运⾏⽅法有很多种,可以使⽤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-",功能分别是将给定的属性添加到复制⽂件,以及,从复制⽂件中删除给定的属性。
例如:
IPHONE 14 PRO
robocopy C:\windows F:\WindowsSysFile /e /A-:rsh
这样,不仅将所有⽂件进⾏了复制,也删除了诸如只读、系统、隐藏等属性,⽅便了我们在复制之后对⽂件进⾏操作和编辑等。原⽂来⾃于