文件备份 XCOPY随心所欲

软件先锋 2015-12-23 18:31网络整理点击: 标签:

借助Windows系统自带的一个命令XCOPY,我们可以轻易地通过命令提示符窗口或用记事本,实现在窗口环境下菜单命令不便实现的文件复制或备份功能。

按类备份文件时,有时会涉及到不同文件夹中的不同文件根据某种条件备份的问题,如果涉及到连同文件夹结构也一同备份,这种情况下,我们往往需要借助于一些专用的备份工具来实现,设置起来也比较繁琐。实际上,无论是低版本的Windows XP操作系统,还是更高级的Windows 7、Windows 8系统,均提供一个强大的XCOPY命令程序,借助于这个命令,我们只需用命令提示符窗口直接输入一行命令,或用记事本写一句简单的BAT代码执行一下,就可以随心所欲地进行自己的文件备份,较之用窗口操作要效率高得多。

●案例:快速备份某一类文件

办公室的资料文件备份盘中分布着许多文件夹,在每个文件夹中随机地存在着数量不等、级别不一的子文件夹,在这些文件夹中存放有TXT、DOC、XSL、PDF等各种格式的文件。在整理备份文件时候,领导要求将所有的PDF文件都找出来统一处理为可编辑格式。如何快速找出这些分散在不同地方的PDF文件,并将找出的文件存放在一个新文件夹中呢?

借助于Windows自带的XCOPY命令,在命令提示符窗口下就能完成任务。我们假设存放目的地为E盘的MYPDFBAK文件夹。

启动命令提示符窗口,在命令提示符窗口中输入CD加空格,然后将命令提示符窗口和资源管理窗口并列排放在桌面上,最后拖动资源管理器中的工作驱动器或工作文件夹到这个命令窗口(视情况看要备份整个驱动器还是备份某个文件夹),构成一条完整的进入该工作目标的命令。回车执行该命令,进入该工作驱动器或文件夹。

在命令提示符窗口中执行如下命令(图1):

1306asw-Xcopy复制1

XCOPY *.PDF /S E:\MYPDFBAK

随后,当前驱动器(或文件夹)以及其下各级子文件夹下面的PDF类型文件均被复制到E盘的MYDOCBAK文件夹中了,而且保持原来的目录结构。

其中,参数/S的意思是在复制指定类型文件时包含本级目录和各级子目录(空目录除外)。

小提示:以上是复制一类文件的命令,如果希望迁移一批文件,而不是复制文件,那么只需在记事本中使用迁移文件命令MOVE就可以了。

●案例:按文件名中的关键词备份

某公司的文件名中要求均以含有“设备”“配件”“材料”的关键字分别标示物资的类型。如果只需要将某一类的文件(如“材料”)备份,该如何将这类所涉及的所有文件备份出来呢?

假设该公司文档存储目录为F盘的“2012物资供应”,备份目标为F盘的“材料”。生成备份文件夹的方法如下:

在F盘的根目录中用记事本建立一个文件(如“备份.TXT”),在其中输入如下一条命令(图2):

1306asw-Xcopy复制2

XCOPY F:\2012物资总目\*材料*.* F:\材料 /S

存盘之后,将文件的扩展名改为BAT,得到“备份.BAT”文件,双击该文件,在“F:\材料”目录中便自动生成了所有材料类的文件。

说明:以上命令中“*材料*.*”是采用通配符来描述所有含有“材料”字样的文件,不管“材料”字样出现在文件名的什么位置。

●案例:给系统重要文件留个备份

系统目录中有许多含有系统属性和隐含属性的DLL文件,这些文件都非常重要,它们一旦被病毒或其他程序破坏,轻者造成系统故障,重者造成系统不能启动。如果我们能事先将这些文件备份下来,万一如果遇到系统出现故障,就可以用PE启动系统,然后找到这些文件,恢复系统了。这项备份工作同样可以用XCOPY命令简单地来实现。

比如,我们要将位于C盘的Windows系统中的所有系统属性和隐含属性的文件备份到移动硬盘E:中的某目录SYSFILEBAK中。具体实现过程如下:

首先,我们用记事本构建一个批处理程序BAKSYSFILE.BAT,具体内容如下(图3):

1306asw-Xcopy复制3

XCOPY C:\*.DLL /S /H E:\SYSFILEBAK

命令行中的参数/H表示复制具有隐藏属性的文件,同时也复制系统属性的文件。/S表示包含系统的各级子目录。*.DLL表示对C盘的所有文件进行过滤筛选。

将该批处理文件拷贝到C盘的根目录中并执行以下,最后我们就会在E:\SYSFILEBAK文件夹中获得所有这些重要文件的备份了。

● 案例:随时自动续传大量文件

如果想把大容量硬盘E:\上所有文件复制到F:\盘上,限于时间,不能一次完成,需要多次复制完成。或者是因为某种原因,上次没有复制完成,突然中断复制,目前又想接着复制。这种情况下,自己又记不住哪些文件已经复制,哪些没有复制,该怎么办?

1306asw-Xcopy复制4

很简单,在命令提示符下,执行XCOPY E:\*.* F: /S /H /D /Y命令即可(图4)。它能查出哪些文件是已经复制过去的,跳过复制;同时查出哪些文件还没有复制过去,立即进行复制。其中起作用的一个主要参数/D:m-d-y的意义是,复制在指定日期或指定日期以后更改的文件。如果没有提供日期,只复制那些源时间比目标时间新的文件。

●案例:自动跳过复制错误提示

还有一种备份的情况,我们经常也碰到的:不管是用窗口复制还是在命令提示符下操作,在复制过程中,因为复制某个文件出错或者这个文件在使用中,而停止了复制工作,如果我们这时不在电脑旁边,那么复制工作暂停并将一直等下去,直到我们人为干预。

如果我们事先想到这一情况,想让复制过程自动跳过某个出错的文件和某个正在使用中的文件而继续复制其他文件,可用下面的方法。

具体办法就是在XCOPY命令中加入参数 /C一个,也就是将命令行变成XCOPY E:\*.* D: /S /H /D /C /Y 就行了(图5)。参数/C的作用就是,即使有错,也继续复制。

1306asw-Xcopy复制5

●案例:复制完毕自动关掉电脑

如果备份复制工作量很大,需要耗费很多时间,这时又正好到了下班时间,怎么办?需要加班等待吗?不用!我们可以用一个简单的批处理让XCOPY备份的过程变为自动复制,并且复制完成后关闭电脑。

新建文本文档,输入如下命令(图6),然后更名为XCOPY.BAT。

1306asw-Xcopy复制6

XCOPY E:\*.* D: /S /H /C /Y

SHUTDOWN -S

需要备份时,双击XCOPY.BAT运行它,你这时候可以出去玩或下班了。电脑会自己复制备份完成文件然后自动关机。

可以看出,这里是应用了SHUTDOWN -S命令和XCOPY命令联合使用的一个技巧来完成备份和自动关机操作的。

●案例:用好XCOPY的排除备份

XCOPY可以排除不想要的文件或文件夹进行复制。不过这个命令用起来并不像Windows帮助里写的那么简单。我们先看看XCOPY的帮助是怎么写的:

/EXCLUDE:file1[+file2][+file3]...

指定含有字符串的文件列表。每一个字符串必须在文件的单独行中。如果有任何字符串与要被复制的文件的绝对路径相符,那个文件将不会得到复制。

例如,指定如 \obj\ 或 .obj 的字符串会排除目录 obj 下面的所有文件或带有.obj 扩展名的文件。

看了这个帮助甚至它举的例子,你会用了吗?我相信你也仍然是一头雾水!没关系!下面就让我们来通过具体案例来作说明。

我们假设有两个文件夹,一个名为DATA,存放了如下表所示的文件夹或文件。一个名为BACKUP,是用作备份筛选结果的目标文件夹。

Z:.

├─DATA

│ ├─计划

│ └─总结

│ 计划.TXT

│ 总结.TXT

│ 1.计划

│ 2.总结

│ 3.计划

│ 4.总结

│ 5.总结

└─BACKUP

假设我们的备份目标就是把凡是标记了“总结”的文件夹和文件拷贝到BACKUP这个目录里面,而排除标记了“计划”的文件和目录。

我们只需执行如下命令即可达到目的(图7):

1306asw-Xcopy复制7

XCOPY /E /S /H /EXCLUDE:UNCOPY.TXT Z:\DATA Z:\BACKUP

其中的文本列表文件UNCOPY.TXT里面,要包含我们想要排除的文件以及文件夹,这个文件需要我们另行编好保存,具体内容如下:

\计划\

计划.TXT

.计划

本例的用法还有一个很实用的应用场合:比如你硬盘上有文件损坏了,你又想备份硬盘,可以使用这个方法避开损坏的文件。