COPY Concatenates Files Based on Command Syntax (69575)



The information in this article applies to:
    Microsoft MS-DOS operating system 3.1
    Microsoft MS-DOS operating system 3.2
    Microsoft MS-DOS operating system 3.21
    Microsoft MS-DOS operating system 3.3
    Microsoft MS-DOS operating system 3.3a
    Microsoft MS-DOS operating system 4.0
    Microsoft MS-DOS operating system 4.01
    Microsoft MS-DOS operating system 5.0
    Microsoft MS-DOS operating system 5.0a
    Microsoft MS-DOS operating system 6.0
    Microsoft MS-DOS operating system 6.2
    Microsoft MS-DOS operating system 6.21
    Microsoft MS-DOS operating system 6.22

This article was previously published under Q69575

SUMMARY

The MS-DOS COPY command can combine multiple files into one file. When you issue a command of the following form, COPY switches to ASCII mode and merges all source files into the target file

COPY <multiple_file_list> <single_file>

where <multiple_file_list> can be of three forms: filenames with "*" or "?" (wildcard filenames), filenames separated with "+" (a specific, ordered list of files), or a combination of the two.

Because the COPY command recognizes <single_file> as being an absolute target, it assumes that you want to concatenate the multiple files into a single new file. This means that COPY switches to ASCII mode where end-of- file (EOF) markers are acknowledged.

MORE INFORMATION

This behavior is sometimes confusing when you know that only one file exists that matches the source filename and you formulate a COPY command that assumes that knowledge. If you issue a command as in the following example, COPY still switches into merge mode and copies the file as if it were ASCII:

COPY C:\COMM*.* A:\COMMAND.COM

Although you intended to copy only COMMAND.COM from the root of drive C to the root of drive A, COPY actually tries to concatenate COMMAND.COM with some other file before it discovers that the some other file does not exist. The resulting file is shorter than the original because COPY stopped at the first 0x01A byte that it found. (In the case of COMMAND.COM, this is usually within the first ten characters, so this particular example occurs quite often).

Modification Type: Major Last Reviewed: 5/12/2003
Keywords: KB69575