古董级别的操作系统,相当于(旋盘式)贝尔电话。
比 Unix 晚,在 X-Windows、Windows 等图形界面系统出现之前的低级别(低成本)操作系统,相当于(按键式)电话座机。全世界曾经存在过上千不同环境、语言版本的DOS。在偶尔的情况下,你不得不使用座机(DOS),本文就是介绍一下其中的COPY命令。
属于 Unix 的孙子,在 Windows 等图形界面系统出现之后的低级别(低成本)操作系统,相当于电话子母座机 或 非智能手机。Linux属于对用户不友好的操作系统。因部署成本低,而受互联网企业之选。目前的Linux江湖类似于三国或战国期间。基于Linux的国产操作系统,越来越好了,大家应该支持。
具有友好用户界面的高效率(高价格)的操作系统,相当于智能手机。
写程序的目的不就是程序员多花时间让用户少花时间吗?
在Windows操作系统中,有两种途径,可以进入DOS这样的“命令行”界面。
Windows(10/11/...)
如果你安装了 Visual Studio 软件,则可以这样进入:
DOS 系统下,COPY 由 copy.com 可执行文件实现。
以前 .com 是 .command 的简称;不是 www 的 .commercial 的简称。
现在一般可执行文件为 .exe ,是 executable 的简称。
文件夹directory,以前一般称为“目录Catalog”。
文件夹可以是本地的,当前(硬)盘,或者其他盘;比如:c:/unused 或 d:/cheap
文件夹也可以是网(络)盘;可以用 IP 地址,或域名 或其他标识,比如 \\10.11.12.13\
阅读后面文字的时候,看到 文件夹 或 目录,思路要打开一些。
文件名当然就是文件名而已。徒有虚名说的就是这个。
DOS 下使用文件名需要注意的是:
1)当前文件夹下的文件,比如 a.txt;
2)上一层文件夹下的文件,比如 ./a.txt;更多层次依次类推。。。
3)上一层文件夹下的子目录内的文件,./one/a.txt;
4)指定文件夹下的文件:c:/o n e/a/b/c/d/1.txt;
5)最好用双引号将文件名括起来!!!"c:/o n e/a/b/c/d/1.txt"
很多时候就是缺了这一对儿双引号造成的错误!
操作系统下的文件,一般都有后缀,比如 a.exe, b.txt. c.sb ......
其实,后缀不过是一件衣服,为了简单说明文件的类型(或其他属性)。
当然,当然,也有没有后缀的。属于“裸文件”,让你猜?猜?猜?。
阅读后面文字的时候,看到 文件及文件后缀,思路要打开一些,也许 a.exe 是一张情人照片 jpep 图片,甚至是一部不能给老婆大人看到的电影 a.mp4。
知识正是其不成章法才称为知识,否则就是识字了。
COPY是DOS下最常用的(包括但不限于)拷贝命令。
COPY可同时复制多个文件(文件夹及其子目录)。
COPY [/D [1]] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B]
[+ source [/A | /B] [+ ...]] [destination [/A | /B]]
斜线开始的称为“选项”,一般是大小写不敏感的。
1)source 指定要复制的文件。
2)destination 为新文件指定目录和/或文件名。
3)/A 表示一个 ASCII 文本文件。
4)/B 表示一个二进位文件。
5)/D 允许解密要创建的目标文件
6)/S 包含子目录
7)/V 验证新文件写入是否正确。
8)/N 复制带有非 8dot3 名称的文件时,尽可能使用短文件名。
9)/Y 不使用确认是否要覆盖现有目标文件的提示。
A)/-Y 使用确认是否要覆盖现有目标文件的提示。
B)/Z 用可重新启动模式复制已联网的文件。
copy 1.txt 2.txt
copy "1.txt" "2.txt"
copy 1.txt c:\unused\ 等于 copy 1.txt c:\unused\1.txt
copy 1.txt d:/2.txt
copy "1.txt" "d:/2.txt"
copy "1.txt" "\\remote\2.txt"
copy "1.txt" "\\192.168.11.12\2.txt"
copy c:/one d:/two /s
copy c:/one/*.* d:/two/*.* /s
copy "c:/one" "d:/two" /s
合并指定文件
copy /b 1.bin+2.bin+3.bin total.bin
合并所有(或指定类型的)文件
copy /b *.bin total.bin
copy /b *.doc unused.dat
合并指定不同类型的文件
copy /b 1.png+2.txt+3.ppt joy.bin
假设我们有一个名为 a.txt 的文件,它位于 c:/one 目录中,
现在我们想把它复制到 d:/two 目录中,并更改扩展名为 .bak,可以使用以下命令:
copy c:/one/a.txt d:/two/a.bak
这将把 a.txt 复制到 d:/two 文件夹中,并将其扩展名更改为 .bak。
当然还有一些使用细节。
copy "c:/one" "d:/two" /s >err.txt
将执行期间错误的错误文本,输出到 err.txt 文件内。
XCOPY是COPY的扩展,可以把指定的目录连文件和目录结构一并拷贝,但不能拷贝系统文件;使用时源盘符、源目标路径名、源文件名至少指定一个;选用/S时对源目录下及其子目录下的所有文件进行COPY。除非指定/E参数,否则/S不会拷贝空目录,若不指定/S参数,则XCOPY只拷贝源目录本身的文件,而不涉及其下的子目录;选用/V参数时,对拷贝的扇区都进行较验,但速度会降低。
XCOPY source [destination]
[/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
[/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]
[/EXCLUDE:file1[+file2][+file3]...]
要从驱动器A 将所有文件和子目录(包括所有空的子目录)复制到驱动器 B,请键入:
xcopy a:b: /e
要包含上一示例中的任何系统或隐藏文件,请按如下所示添加 /h 命令行选项:
xcopy a:b:/s /e /h
要使用 \Rawdata 目录中 1993 年 12 月 29 日后更改的文件更新 \Reports 目录中的文件,请键入:
xcopy \rawdata \reports /d:12-29-1993
要更新上例中 \Reports 中存在的所有文件,而不考虑日期,请键入:
xcopy \rawdata \reports /u
如果只想获得前一个命令要复制的文件列表,而不复制文件,请键入:
xcopy \rawdata \reports /d:12-29-1993 /l > xcopy.out
文件 Xcopy.out 列出了要复制的所有文件。
要将 \Customer 目录和所有子目录复制到网络驱动器H: 上的目录 \\Public\Address,保留只读属性,并在 H: 上创建新文件时对您做出提示,请键入:
xcopy \customer h:\public\address /s /e /k /p
要发出上一个命令,确保在 \Address 目录不存在时 xcopy 会创建该目录,同时应抑制显示创建新目录时要显示的消息,请按如下所示添加 /i 命令行选项:
xcopy \customer h:\public\address /s /e /k /p /i
ROBOCOPY 是 windows 系统自带的一个强大的命令行文件夹/文件复制工具,它有非常多的参数可以配置。在数据同步中,ROBOCOPY 可用于编写自动同步脚本,如镜像同步目录 a 到目录 b,或增量同步 a 到 b 等,适合作为数据备份脚本。
Microsoft Windows中内置的传统的“复制和粘贴”功能有一些局限性。它在执行简单的任务(将一个文档从一个目录移动到另一个目录等)时处理得还好,但缺乏 IT 专业人员在工作场所所需的高级功能。例如,复制和粘贴操作不包括任何高级复原功能,所以不允许从短暂的网络中断后进行恢复。特别是当复制完整的目录时,它还是一个要么全有要么全无的问题。而使用 UI,您无法选择仅复制新文件还是复制更新过的文件。您可以复制单个的文件、整个目录或什么也不复制。启动Robocopy。这个强大的工具包含在 Microsoft Windows Server 2003 Resource Kit Tools 中(已经集成到Windows Vista与Windows 7),考虑到了上述所有高级功能以及更多功能。Robocopy 支持更多重要的文件复制任务,从而能够真正简化您的工作。我想您将发现最大的好处是,可以创建两个文件结构(可以根据您的选择包括所有子文件夹和文件)的完全的镜像副本而不复制任何不需要的文件。只复制源位置中的新文件或更新后的文件。Robocopy 还允许您保留所有相关文件信息,包括日期和时间戳、安全访问控制列表 (ACL)及更多内容。
以下文字来自于百度百科。
实例一:文件,想怎么复制就怎么复制
[实现效果]
随时将源文件夹中的纯文本(TXT)、Word文档(DOC)还有BMP、TIF图像文件复制到目标文件夹中
,这是在“资源管理器”中直接拖放所做不到的。[简单命令]
robocopy d:\work e:\back *.txt *.doc *.bmp *.tif /s
[参数讲解]
将d:\work文件下的TXT、DOC、BMP、TIF复制到e:\back文件夹,其他文件则不复制。/s是表示包括
除空文件下的所有子目录,如果没有则仅复制d:\work下的文件而不包括子目录。
[举一反三]
(1)如果要将文件夹下的所有文件包括空文件夹全部复制到目标文件夹,命令为:robocopy
d:\work e:\back /e
/e表示复制所有子目录包括空文件夹。
(2)如果只想复制两个层级内的文件(再下的层级里的文件则不拷贝),输入命令:robocopy
d:\work e:\back /e /lev:2
/lev:2表示复制的层级,比如指定层级后d:\work\soft(二级)下的文件会被复制,而
d:\work\soft\office(***)下的文件则不被复制。
实例二:垃圾文件不复制
[实现效果]在备份数据时,不可避免会将类似于*.bak、*.tmp的垃圾文件也复制到目标文件夹,用
Robocopy可以将我们经常碰到的垃圾文件在拷贝时就清理出家门,从而生成一个干干净净的文件夹。
[简单命令]
robocopy d:\work e:\back /e /xf *.tmp *.bak
[参数讲解]
/xf为指定不执行复制操作的文件类型,后面的文件名支持通配符。如果参数为/xd,则表示排除后
面指定的文件夹。
实例三:大文件 我不要
[实现效果]
复制的时候,为了节省时间,需要将一些大文件暂时不拷贝,等有空闲时间时,再执行复制操作不
迟。
[简单命令]
robocopy d:\work e:\back /e /max:6000000
[参数讲解]
仅复制不大于6000000bytes的文件,/max:后直接接数值,数值单位为byte。如果是/min:1000,则
复制不小于1000bytes的文件。两个参数可以同时使用,界定复制文件大小的范围。
实例四:只要这一周修改的文件
[实现效果]
这一周处理了哪些文档?编辑了那些文件?将这些修改了的文档复制到一个文件夹下,再好好回味
一下。本例就是要将d:\work中最近七天内新建或修改了的TXT、DOC、XLS、PPT等文档,复制到e:\look
目录下。
[简单命令]
robocopy d:\work e:\look /s *.txt *.doc *.xls *.ppt /maxage:7
[参数讲解]
/maxage:表示最远修改时间的,修改时间比这个还要旧的文件将不会被复制。/maxage:后可接数字
,也可以接日期,数字小于1900时表示天数,否则就得用YYYYMMDD来表示具体的日期
如/maxage:20040210表示2004年2月10日后被修改的文件才允许复制。与之相对应的参数
是/minage,表示最近修改时间,比这个时间新的文件将不被复制。
[举一反三]
robocopy d:\work e:\look /s *.txt *.doc *.xls *.ppt /maxage:7 /minage:1
则表示近七天内除今天外修改的文件才允许被复制。
与修改时间相对的还有最近访问时间,/maxage指最远访问时间,比这个时间老的文件将不被复制。
/minage是指最近访问时间,比这个时间新的文件将不被复制。
实例五:我的文档排排站
[实现效果]
上例中复制时,所有的文档都会带来本身的路径信息,文档是会将其所存放的文件夹也复制过来。
这给我们的翻阅查看带来很多不便,得单击多层文件夹才能看到文件,能不能将所有的文档直接复制到
一个文件夹下呢?这个需要用XXCOPY来实现。
[简单命令]
xxcopy d:\work e:\look /s /in*.txt /in*.doc /sg /yy /da:2004-02-02 /DB:2004-02-
10/DA:1997-01-01
[参数讲解]
此命令将d:\work中从2004年2月2日到2月10生成的 TXT、DOC文件全部直接复制到e:\look目录下,
不新建子文件夹,打开e:\look就能看到所有文件。XXCOPY和Robocopy的语法参数还是有较大差异的,表
示指定文件类型时,XXCOPY会用/in*.*,表示日期时/da为在指定时间后,/db为在指定时间前,日期的
表示为YYYY- MM-DD。
另外,/sg表示复制文件到同一文件夹,/yy表示在所有要求用户应答的地方都自动认为是Yes,在执
行过程中不需要用户干预。
实例六:完全克隆
[实现效果]
我们一般采取的复制方式默认是增量复制,即根据文件的大小、修改时间将源文件夹里的内容向目
标文件夹复制,久而久之,目标文件夹里就可能存在大量源件夹里早已经删除且无用的文件和文件夹。
如果要让备份完全相同,即拷贝时删除在目标文件夹里存在但源文件夹里并没有的文件。
[简单命令]
robcopy d:\work e:\look /mir
[参数讲解]
/mir的作用等同于/purge /e,/purge表示清理目标文件夹有而源文件夹里没有的文件(夹)。通过
这个命令,能保证源文件夹和目标文件夹结构与文件完全相同。这在创建镜像备份时,非常有用。
实例七:移动文件
[实现效果]
我们前面讲的都是复制,如果我们要将文件夹移动到目标文件夹,如何操作呢?
[简单命令]
robocopy d:\work e:\look /move /e
[参数讲解]
其中,/move表示移动。
实例八:我只要文件夹骨架
[实现效果]
笔者的工作需要周期性地新建和整理大量的文件夹,每次的文件夹结构一样,只是文件不尽相同。
如果是以前,就得一个一个简单重复去制作,而现在就不需要了。Robocopy和XXCOPY可以让你轻松实现
复制文件夹结构。
[简单命令]
xxcopy d:\work e:\mystruct /t /yy /dl3
[参数讲解]
将d:\work的三层文件夹结构复制到e:\mystruct中。其中/t表示创建文件夹结构,/dl3表示复制的
文件夹结构为***,数字可以自行输入,如果没有此参数,默认建立整个文件夹结构。
Robocopy创建文件夹相对要麻烦一些,/create参数不仅要创建结构,还要创建文件夹下所有文件的
0字节文件,并非真正的结构,我们只好剑走偏锋了。
robocopy d:\work e:\mystruct /e /lev:3 /minage:19000101
为Robocopy指定一个不可能创建文件的时间,因为有参数/e 的作用,虽然没有文件符合要求(你机
器里没有早于1900年1月1日的文件),但Robocopy还是会忠实地创建文件夹,这样就达到了生成文件夹
结构的目的。另外,/lev:3表示复制文件夹的层级,同样可以自行输入。
实例九:隐藏文件我不要
[实现效果]
在默认状态下,隐藏文件是并不显示的,但在复制的过程中,它还会随着文件夹一起被复制。可不
可以将这些隐藏文件排除在复制范围之外呢?
[简单命令]
robocopy d:\work e:\back /e /xa:h
[参数讲解]
Robocopy支持对属性进行操作。上面的命令将复制源文件夹中全部文件,但全部具有隐藏属性的文
件将不会被复制。/xa:h,表示将具有隐藏属性的排除出复制范围,与之相对应的是/ia,表示包括只对
拥有指定属性的执行操作。属性有R:只读,A:存档,S:系统,H:隐藏等几种供选择。
[举一反三]
(1)此外,Robocopy还有/a+、/a-等参数对文件属性进行操作,分别表示在文件被拷贝后为文件添
加、去除某属性。
robocopy d:\work e:\back /ia:rs
表示只复制具有只读和系统属性的文件。
(2)robocopy c: d: /-a:rsh
表示将文件拷贝到D盘后,将拷贝生成的文件的只读、系统、隐藏属性去掉,以方便查看和修改。
实例十:NTFS权限跟着走
[实现效果]
在使用Windows 2000、Windows XP时,在多用户使用一台电脑时或管理服务器时,经常要为文件夹
指定用户访问和修改的权限(如图1,需要分区为NTFS)。不过,用一般的复制方式无法保留我们设置的
权限,这在服务器备份时意味着我们得重新设置用户权限。不过,Robocopy可以让我们在复制文件的时
候,将属性、用户权限、所有者都可以一并复制到目标文件夹中。
备份双友邻精彩5例-Robocopy和xxcopy全掌握
[简单命令]
robocopy d:\work e:\back /e /copyall
[参数讲解]
/copyall等于/copy:datsou,表示将所有源文件夹的信息复制到目标文件夹中,其中D:文件数据,
A:文件属性,T:时间信息,S:权限信息,O:所有者信息,U:审核信息。
[举一反三]
如果源文件夹的权限被修改,需要同样更新目标文件夹的权限时,我们不必再重复复制,只需输入
robocopy d:\work e:\back /is /copy:sou
如果没有/copy参数,默认为/copy:dat,没有后面三项的信息。
实例十一:集中备份到文件服务器
[实现效果]
希望每天能够把相应数据备份到文件服务器上,以免数据丢失。
[简单命令]
robocopy d:\work \ctips_serverarticlesshare/e /copyall
[参数讲解]
从中可以看出,robocopy完全支持文件服务器共享文件夹数据的拷贝。
[举一反三]
(1)如果我们创建了一个环境变量,如定义%databack%为\ctips_serverarticles\back,那只要输
入相应的命令:robocopy d:\work%databack% /e /copyall 即可把d:\work下的文件全部备份到
\ctips_serverarticles\back下。当然,如果\ctips_serverarticles\back空间不够时,只要更换环境
变量的值到其他文件夹,如\ctips_serverarticles ewback,上述命令无需更改就可以反数据拷贝到新
的文件夹中。
(2)如果你只想把数据备份到共享文件夹中以你的机器名为名字的共享文件夹中,使用xxcopy会更
方便:xxcopy d:\work\ctips_serverarticles/$HOST$ /e /yy 其中/$HOST$表示你的机器名,如你的
机器名为CTIPS_SYJ,那会把d:\work 文件夹下的文件拷贝到\ctips_serverarticles\CTIPS_SYJ文件夹
下。如果你的机器名为CTIPS_MLB,那执行上述命令后就可以把d:\work 文件夹下的文件拷贝到
\ctips_serverarticles\CTIPS_MLB文件夹下。由于同局域网内的机器名字不会相同,执行上述命令后就
可以保证数据不会被拷贝到同一文件夹下。
实例十二:一动就备份
[实现效果]
有些工作内容非常重要,需要时时刻刻注意备份,可是我们哪里有这么好记性和耐性呢?这事,还
是交给 Robocopy来做吧。Robocopy能时时监视要备份的文件夹,只要文件夹修改到一定时间和程序,
Robocopy就会立即开始备份。它会一直监视文件夹,除非用户自己终止。
[简单命令]
robocopy d:\work e:\back/e /copyall /mot:1 /mon:2
[参数讲解]
上述命令表示复制文件夹所有信息到目标文件夹并进行监视。执行此命令后,命令提示符窗口如图2
所示。一旦时间过了一分钟,并且源文件夹至少有或2处以上的修改,Robocopy就会自动启动另一个进程
,执行上述备份操作。Robocopy能监视源文件夹结构、文件和文件夹名称、大小、最后修改时间,在这
里,甚至连属性和权限等信息被修改时,Robocopy也会记为修改次数。
备份双友邻精彩5例-Robocopy和xxcopy全掌握
/mot后接的是时间(分钟),是指Robocopy执行操作的最短时间;/mon后接的是最少文件修改个数
。在监视过程中,会自动记录时间和修改的次数,只有同时符合以上两个条件时,Robocopy才开始执行
,执行完成后,这两个数据会自动清零,并重新开始监视文件夹,除非用户关闭命令提示符窗口或按下
Ctrl+Break键。
[举一反三]
如果你要开机就监视并备份相应文件夹,则可以把上述命令放到“启动”组中。
实例十三:不到时间不备份
[实现效果]
复制的过程总会占用系统资源,如果能设置在自己不在电脑边上的时候开始复制备份,就会方便得
多。比如,每天5:50下班,希望下班后,到达6点时,Robocopy自动开始备份相应数据。
[简单命令]
robocopy d:\work e:\back /e /rh:1800-1830
[举一反三]
运行后,复制操作将会等待至指定时间开始(如图3)。其中,RH格式为/RH:hhmm-hhmm,指定
Robocopy开始的时间段,在这个时间段外,拷贝会被暂停。时间为24小时格式,4个数字长,从0000到
2359,而且两个数字不能相同。
备份双友邻精彩5例-Robocopy和xxcopy全掌握
实例十四:计划任务备份
以上的到时间备份、监视文件夹备份方式,每次重启系统会都会要重新执行以上命令,还远远不够
智能,如果能和Windows的计划任务配合,所有问题就迎刃而解了。以我们要在每天10:00自动调用
Robocopy开始监视备份文件夹为例,说一说计划任务与Robocopy的携手。
第一步:新建BAT文件
新建一个批处理文件autobak.bat,输入如下命令
robocopy d:\work e:\back/e /copyall/mot:1 /mon:2
第二步:创建计划任务
选择“开始→设置→控制面板”,双击“任务计划”图标。把autobak.bat批处理文件拖放到“任务计划
”窗口,然后双击新生成的autobak.bat图标,在弹出窗口中设置其属性。
第三步:设置开始时间
切换到“日程安排”标签,单击“任务计划”下拉列表框,从中选择“每天”,“开始时间”设置为
10:00,单击“高级”可以设置起止的日期(如图4)。
通过上述设置后,到了设置的时间,机器就会自动备份执行批处理文件,自动备份并监视文件夹。
备份双友邻精彩5例-Robocopy和xxcopy全掌握
实例十五:清理文件也拿手
除了一般的复制功能,XXCOPY还有文件清理功能,可以将不需要的文件快速清理出硬盘。以下命令
会清除文件和文件夹,请先建立测试文件夹掌握其操作后再对文件夹进行操作。
1.清除所有无用文件
xxcopyd:\work*.tmp /s /h /yy /rs
/rs表示不复制而直接从源文件夹中删除指定文件,/h表示指定隐藏和系统文件。
2.清除文件夹
xxcopyc: 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字节文件
xxcopy c: emp*.*/sz:0 /s /h /yy /rs
通过以上四种方式的组合,我们可以轻松实现对文件及文件夹的整理工作。
最后,还有一几个小技巧告诉你,希望能有利于你更好地使用XXCOPY和Robocopy。
★将命令变成任务
在Robocopy加上“/save:任务名”可以将当前操作记录为任务文件,通过“/job:任务名”就可以方便调
用,不需要再输入一长串的命令了。此任务文件可以用纯文本编辑器(如记事本)来编辑。
★将复制备份过程录下来
默认情况下,Robocopy的操作过程只是在命令提示符中显示,我们可以让它把操作过程输出为TXT文件,
加上“/log:文件名.txt”即可。