说实话,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

这样,不仅将所有文件进行了复制,也删除了诸如只读、系统、隐藏等属性,方便了我们在复制之后对文件进行操作和编辑等。

随心所欲玩复制 详解robocopy的更多相关文章

  1. MySQL异步复制、半同步复制详解

    MySQL数据复制的原理图大致如下: 从上图我们可以看出MySQL数据库的复制需要启动三个线程来实现: 其中1个在主服务器上,另两个在从服务器上.当发出START SLAVE时,从服务器创建一个I/O ...

  2. mysql的主主复制详解

    Mysql双主部署 解释: 所谓双主备份,其实也就是互做主从复制,每台master既是master,又是另一台服务器的slave.这样,任何一方所做的变更,都会通过复制应用到另外一方的数据库中. 要求 ...

  3. MySQL数据的主从复制、半同步复制和主主复制详解

    一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...

  4. MySQL数据的主从复制、半同步复制和主主复制详解-转

    一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...

  5. MYSQL 复制详解

    MySql 复制介绍 MySQL复制允许将主实例(master)上的数据同步到一个或多个从实例(slave)上,默认情况 下复制是异步进行的,从库也不需要一直连接到主库来同步数据 MySQL复制的数据 ...

  6. Java中对象的深复制和浅复制详解

    1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵ ...

  7. GTID复制详解

    前言 GTID复制是MySQL 5.6后的新功能,在传统的方式里,主从切换后,需要找到binlog和POS点,然后执行命令change master to 指向新的主库.对于不是很有经验的人来说,往往 ...

  8. Apache的对象复制详解

    BeanUtils.copyProperties 和 PropertyUtils.copyProperties 两个工具类都是对两个bean之前存在name相同的属性进行处理,无论是源bean或者目标 ...

  9. MariaDB主从半同步复制详解

    半同步复制(Semisynchronous replication) 介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay lo ...

随机推荐

  1. chrome 下改动 agent 的方法

    前言 这篇文章和 tiankonguse 的个人站点里的文章保持同步. 非常早之前,在 chrome 下改动 agent 的方法是使用 chrome 插件. 后来 chrome 的某一个版本号中自带这 ...

  2. python_装饰器模式

    装饰器模式定义:动态地给一个对象添加一些额外的职责. 在Python中Decorator mode可以按照像其它编程语言如C++, Java等的样子来实现,但是Python在应用装饰概念方面的能力上远 ...

  3. SecureCRT同时发送命令到所有主机

    有时候我们需要在多台服务器上执行相同的命令,比如安装软件,复制,粘贴,删除等等,但一台一台的去操作工作量就太大了,我们可以借助SecureCRT这款客户端远程连接工具实现这样的要求! 相关阅读: 如何 ...

  4. [转]十个 iOS 面试问题

    原文地址:http://onevcat.com/2013/04/ios-interview/ 不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘 ...

  5. ABBYY FineReader利用模式提高OCR质量

    提高OCR质量,除了可以使用ABBYY FineReader 12OCR文字识别软件解决纸质文档的复杂结构未出现在电子文档中,或者未正确检测到区域的问题(详见如何提高ABBYY FineReader ...

  6. spring数据连接池配置参数

    1.使用jdbc连接,每次使用完毕需要关闭连接. 2.使用数据库连接池就会方便很多,但是如果参数配置不对,也会引起mysql连接数不够,导致mysql挂掉,基本原理是:不使用的连接数及时回收回来,而不 ...

  7. 【搞笑签名】390个qq个性昵称或签名,周末前娱乐一下

    1 来瓶82年的矿泉水 2 名不正则言承旭 3 天涯何处无芳草,还是母乳喂养好 4 她的妈妈不爱我 5 你丫的 6 农夫三拳 7 猪嚼在恋√痛 8 马驴脸猛鹿 9 小白兔兽性大发 10 曰捣一乱 11 ...

  8. iis重启的几种方法

    1. 通过“IIS管理器”重启在IIS服务器管理控制树中展开IIS节点,选择需要重新启动IIS服务的计算机,接着单击鼠标右键,选择“所有任务”->“重新启动IIS”. 2.通过“控制面板”-&g ...

  9. yum常用操作

    一.yum安装使用: 1.Yum:rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,up2date的替代工具 2.yum repository:yum repo,存储了众多rpm ...

  10. Linux的时间设置与同步

    http://www.cnblogs.com/liuyou/archive/2012/07/29/2614338.html