返回主页

 

COPY


复制一个或多个文件到所指定的路径下。

本命令也可用来合并文件。当拷贝的文件多于一个时,MS-DOS显示每个已拷贝的文件的名称。


语法:

COPY [/Y|/-Y] [/A|/B] source [/A|/B] [+ source [/A|/B] [+ ...]]
[destination [/A|/B]] [/V]


参数:

source
指定要拷贝的一个或一组文件的文件名和路径。source可由一个驱动器(加冒号)、一个目录名、一个文件名、或它们的组合形式构成。

destination

指定要向拷贝生成的一个或一组文件的路径和名字。destination可由一个驱动器加冒号、一个目录名、一个文件名、或它们的组合形式构成。


开关项:

/Y
表明无需确认便可用COPY替换现存的文件。默认情况下,如果用户把一个现存文件指定为目标文件,COPY会询问用户是否要覆盖该文件。(MS-DOS以前的版本不进行确认)。如果COPY命令是某批处理文件的一部分,那么COPY也不进行确认。给定这一开关将覆盖COPYCMD环境变量的所有默认与当前设置。

/-Y

表明用户希望在COPY命令要替换一个现存文件时给出提示进行确认。给定这一开关将覆盖COPYCMD环境变量的所有默认与当前设置。

/A
表明是一个ASCII文本文件。当/A开关放在命令行的一串文件名之前时,它将作用于所有跟在其后的文件,直到遇到/B开关,这种情况下,/B将取代/A作用于/B前面的那个文件。

当/A跟在一个文件名后面时,它将作用于它前面的这个文件和跟在它后面的所有文件,直到COPY遇到/B,这时/B作用于紧靠在它前面的文件。

ASCII文本文件可用文件结束符(CTRL+Z)来指示文件尾。合并文件时,COPY在默认情况下将文件视为文本文件。

/B
表明是一个二进制文件,当/B在命令行上的一串文件名前时,它作用于所有跟在它后面的文件,直到COPY遇到/A开关 ,这时/A将作用于它前面的这个文件。

当/B跟在一个文件名后,它将作用于它前面的这个文件以及跟在它后面的所有文件,直到COPY遇到一个/A开关,这时/A将作用于它前面的这个文件。

/B 开关指定命令解释程序去读由该目录中的文件大小所指定数目的字节。/B开关是COPY的默认设置,除非是COPY用来合并文件。

/V
验证新文件是否正确写入。



相关命令 :

有关复制目录和子目录的详细信息,请参见<XCOPY>命令。


COPY─注解

设置COPYCMD环境变量

通过设置COPYCMD环境变量,可以控制COPY、MOVE和XCOPY命令在覆盖一个文件之前是否给出提示,要求用户确认。

把COPYCMD环境变量设置为/Y,便可强制COPY、MOVE和XCOPY在覆盖现存文件之前进行提示;如果设置为/Y,就不会进行提示。

进行上述命令时使用/Y或/-Y开关将覆盖COPYCMD环境变量的所有默认和当前设置。



设备的拷入、拷出


可用一设备名来代替一个或多个source(源)或destination(目标)。



拷贝到设备时,/B 开关的使用


当目标是一个设备(如COM1或LPT1)时,/B开关指示MS-DOS以二进制形式拷贝数据。在二进制模式下,所有的字符(包括诸如CTRL+C,CTRL+S,CTRL+Z和回车换行这样的特殊字符)都作为数据拷贝到设备上。而省掉/B开关,MS-DOS则以ASCII形式将数据拷贝到设备上。ASCII形式下,上述特殊字符会引起MS-DOS在拷贝过程中发出特殊动作。



使用默认目标文件


如果没有指定目标文件,MS-DOS将创建一个与源文件同名、创建日期和时间相同的副本,并将它置于当前驱动器的当前目录下。如果源文件在当前驱动器且在当前目录下,而没有为目的文件指定一个不同驱动器或目录的路径,则COPY命令中止执行,MS-DOS显示如下错误信息:

File cannot be copied onto itself
0 File(s) copied



使用/V开关

如果MS-DOS不能验证某个写操作,它会显示错误信息。尽管COPY命令很少出现错误,/V开关仍可验证重要数据的拷贝是否正确。/V会使COPY命令速度减慢,因为MS-DOS要逐个扇区检查磁盘的记录。



使用/A和/B开关

/A和/B开关的作用依它们在命令行中的位置而定。当/A或/B开关跟在源文件名后时,COPY按下面规则操作:

/A
按ASCII文本文件拷贝数据,直到遇到第一个文件结束符。COPY不拷贝文件结束符或其后的数据。

/B
拷贝整个文件包括任何文件结束符。

/A或/B开关项跟在目标文件名之后时,按下面规则操作:

/A
把文件结束符加在文件的结尾处作为文件的最后一个字符。

/B
不加文件结束符。



用COPY命令合并文件

如果指定了多于一个的源文件,且各项之间以+号分隔,COPY会将这些文件合并,生成一个新的文件。若在源文件中用了通配符,但目标仅指定一个文件名,COPY把所有与通配符匹配的源文件合并到一个文件中,文件名由目标指定。

两种情况下,COPY都以ASCII形式拷贝文件,除非指定了/B开关(未指定/B时不要合并非ASCII文件,否则会导致文件被截断,因大多数二进制文件都含有CTRL+Z字符,它将被COPY认作文件结束标志)。

如果目标文件名与被拷贝的文件中的某个同名(第一个文件名除外),则目标文件的原来内容将丢失。这时,COPY会显示信息如下:

Content of destination lost before copy



拷贝子目录中的文件


拷贝目录中的所有文件和子目录,应使用XCOPY命令。

拷贝长度为0的文件

COPY不拷贝长度为0的文件,请使用XCOPY命令拷贝这类文件。



改变文件的日期和时间

如果想把当前的日期和时间赋予文件而不修改文件内容,可使用以下命令形式。逗号表示被省略的目标文件参数。

copy /b source+,,


COPY─例子


下列命令拷贝一个文件,并确保文件结束符是出现在被拷贝文件的结尾:

copy memo.doc letter.doc /a

如果要把NOTE.TXT文件从当前驱动器的当前目录下拷备到MYNOTES目录下,并且希望在覆盖目标文件(如果目标文件已存在)时不进行确认,那么可输入下面一条命令:

copy note.txt mynotes /y

下列命令从当前驱动器目录中拷贝文件ROBIN.TYP到C盘中一个名为BIRDS的现有目录下:

copy robin.typ c:\birds


如果BIRDS目录不存在,MS-DOS把文件ROBIN.TYP拷贝到C驱根目录的名为BIRDS的文件里。

要把几个文件拷到一个文件里,在COPY命令行列出任意数量作为源参数的文件名,间隔以加号(+),并为合并形成的文件指定一个文件名,如下例所示:

copy mar89.rpt + apr89.rpt + may89.rpt report


这个命令将当前目录下名为MAR89.RPT,APR89.RPT和MAY89.RPT的三个文件合并
起来,放到当前目录中名为REPORT的文件中。文件合并时,目标文件是以当前的日期和时间生成的。若省略了目标文件名,MS-DOS就将合并而成的文件存放在第一个源文件中。例如,如果文件REPORT已经存在了,可用下列命令合并所有四个文件到REPORT中:

copy report + mar89.rpt + apr89.rpt + may89.rpt


也可利用通配符,如下例所示,将几个文件组合成一个:

copy *.txt combin.doc


这个命令把当前驱动器上的当前目录里,所有扩展名为.TXT的文件合并到文件COMBIN.DOC中,该文件也在当前驱动器的当前目录里。

用通配符将几个二进制文件合并成一个,要把/B开关包括进去,如下例所示:

copy /b *.exe combin.exe

这可避免MS-DOS把CTRL+Z当作文件结束符处理。

注意:在合并二进制文件时,所生成的文件可能由于内部格式的原因而不能使用。

下例中,COPY将每个扩展名为.TXT的文件对应地与.REF文件进行合并,得到具有相同文件名且以.DOC为扩展名的文件。也就是,COPY合并FILE1.TXT和FILE1.REF,生成FILE1.DOC文件;然后COPY组合FILE2.TXT与FILE2.REF,生成FILE2.DOC;依此类推。

copy *.txt + *.ref *.doc


下面的COPY命令首先组合所有带.TXT扩展名的文件,然后与所有带.REF扩展名的文件合并成一个名为COMBIN.DOC的文件:

copy *.txt + *.ref combin.doc



从键盘拷贝信息

下面的COPY命令将你从键盘输入的信息拷贝到OUTPUT.TXT文件:

copy con output.txt

输完这条命令后,MS-DOS就将此后敲入的所有字符送往OUTPUT.TXT。输入完成后,按CTRL+Z表示想结束这个文件。CTRL+Z字符会以"^Z"形式出现在屏幕上。也可以用F6键结束这个COPY CON命令。按F6生成CTRL+Z字符,屏幕上相应出现"^Z"。

下例将从键盘输入的信息拷贝到连接在LPT1的打印机上:

copy con lpt1


返回主页