XCOPY

{{Short description|Shell command for copying files}}

{{distinguish|XCOPY (artist)}}

{{Infobox software

| name =

| logo =

| screenshot = ReactOS-0.4.13 xcopy command 667x690.png

| screenshot size =

| caption = The ReactOS xcopy command

| developer = Microsoft, IBM, DR, Datalight, Novell, Rene Ableidinger, ReactOS Contributors

| released = {{Release year|df=yes|1986}}

| latest release version =

| latest release date =

| operating system = MS-DOS, PC DOS, MSX-DOS, SISNE plus, OS/2, eComStation, ArcaOS, Windows, DR DOS, ROM-DOS, FreeDOS, ReactOS

| genre = Command

| license = FreeDOS: GPL
ReactOS: LGPL
Others: Proprietary

}}

XCOPY is a shell command for copying files and directory trees from one directory to another or across networks. The command was designed to be more functional than the copy command; but to augment it instead of replacing it.

The name, short for extended copy,{{cite web |url=http://support.microsoft.com/?scid=kb;en-us;100012 |title=Windows NT File System Files |date=2006-11-01 |work=Microsoft Help and Support |publisher=Microsoft}} is often written as XCOPY or xcopy. As was the prevailing style for DOS systems, the name was typically written in all caps when DOS was a prevalent technology and even today in the context of such obsolete systems. In modern times and for modern systems, prevailing style is to write command names in lower case. Since the command's use spans from DOS to current systems, both representations are commonly used.

The command first appeared in DOS 3.2.{{Cite book|author-last=Wolverton|author-first=Van|title=Running MS-DOS Version 6.22 (20th Anniversary Edition), 6th Revised edition|date=2003|publisher=Microsoft Press|isbn=0-7356-1812-7}} The command is available on IBM PC DOS, MS-DOS, OS/2,{{cite web |url=http://www.jatomes.com/Help/Os2Cmd.php#XCOPY |title=JaTomes Help - OS/2 Commands |website=www.jatomes.com |url-status=dead |archive-url=https://web.archive.org/web/20190414130029/http://www.jatomes.com/Help/Os2Cmd.php |archive-date=2019-04-14}} Windows,[https://technet.microsoft.com/en-us/library/cc771254.aspx Xcopy] FreeDOS,{{cite web |url=http://freedos-project.blogspot.com/2018/06/freedos-commands-quick-reference.html |title=The FreeDOS Project blog: FreeDOS commands quick-reference |website=freedos-project.blogspot.com |url-status=dead |archive-url=https://web.archive.org/web/20180722155725/http://freedos-project.blogspot.com/2018/06/freedos-commands-quick-reference.html |archive-date=2018-07-22}} ReactOS,{{cite web|url=https://github.com/reactos/reactos/tree/master/base/applications/cmdutils/xcopy|title = Reactos/Base/Applications/Cmdutils/Xcopy at master · reactos/Reactos|website = GitHub}} and other systems. DR DOS 6.0[https://www.4corn.co.uk/archive/docs/DR%20DOS%206.0%20User%20Guide-opt.pdf DR DOS 6.0 User Guide Optimisation and Configuration Tips] and ROM-DOS{{cite web|url=https://www.datalight.com/assets/files/ROM-DOS_Users_Guide.pdf|title=Datalight ROM-DOS User's Guide|website=www.datalight.com}} include an implementation of the {{code|XCOPY}} command. The FreeDOS version was developed by Rene Ableidinger and is licensed under the GPL.{{cite web|url=http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/pkg-html/xcopy.html |title=FreeDOS 1.2 Updates Package - XCopy (FreeDOS Base) |publisher=Ibiblio.org |date=2007-09-22 |accessdate=2022-09-08}} The ReactOS version was developed J. Edmeades and is licensed under the LGPL.{{cite web|url=https://github.com/reactos/reactos/blob/master/base/applications/cmdutils/xcopy/xcopy.c|title=Reactos/Reactos|website=GitHub|date=26 November 2021}}

As stated by the command that ships with Vista (reported via {{code|xcopy /?}}), Microsoft deprecated {{code|xcopy}} in favor of robocopy.{{cite web |url=http://blogs.msdn.com/matt_pietrek/archive/2007/01/16/robocopy-built-into-vista.aspx |title=Robocopy built into Vista |last=Pietrek |first=Matt |authorlink=Matt Pietrek |date=2007-01-16 |work=Under The Hood (an MSDN blog)}} But, since the version in the current release of Windows does not state this and the command is still available in Windows long after Vista was released in 2007, deprecation may have been reversed.

Use

=Compression=

Since Windows Server 2019 and Windows 10, the command supports a /compress option to optimize throughput across a network. With this option enabled, if the destination computer supports Server Message Block (SMB) compression and the files are very compressible (i.e. not already compressed), there may be significant improvements to performance. {{cite web |title=SMB Compression Lowers Bandwidth and Improves Copy Times in Windows Server and Azure|last=Smith |first=Russell |work=Petri |date=27 November 2020 |url= https://petri.com/smb-compression-lowers-bandwidth-and-improves-copy-times-in-windows-server-and-azure}}Output from xcopy /? in Windows 10 includes "/COMPRESS - Request network compression during file transfer where applicable".

=Deployment=

xcopy deployment or xcopy installation describes installing an application via the relatively simply operation of copying files {{endash}} either using {{code|xcopy}} or another file copying facility. In contrast, many Windows application installations include additional and more complicated operations such as modifying the Windows Registry. Even when an application is implemented using files (that can be installed via a copy operation), many common facilities provided by Windows require registration before they are available to an application. Often, specialized installation tools (such as Windows Installer, InnoSetup, InstallShield, and NSIS) are used to coordinate these relatively complex operations.

Limitations

The command fails with an "insufficient memory" error when the path plus filename is longer than 254 characters.{{cite web |url=http://www.terminally-incoherent.com/blog/2007/02/05/xcopy-insufficient-memory |title=Xcopy: Insufficient Memory|last=Maciak |first=Luke |authorlink=Luke Maciak |date=2007-02-05}} An option "/J" copies files without buffering;{{cite web |url=https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/xcopy |title=Technet: Xcopy |date=2019-05-01}}

moving very large files without the option (available only after Server 2008R2) can consume all available RAM on a system.

The command will not copy files that are being held open by another process.[https://msdn.microsoft.com/en-us/library/aa363858.aspx CreateFileA function (fileapi.h)] The command does not support the Windows Volume Shadow Copy service which allows processes to access open files. Therefore, the command is not useful for backing up live systems.

Example

Create a new directory by copying all contents of the existing directory, including any files or subdirectories having the hidden or system attributes and empty directories.

>xcopy e:\existing e:\newcopy /e /i /h

If the pathnames include spaces, they must be enclosed in quotation marks.

>xcopy "D:\Documents and Settings\MY.USERNAME\My Documents\*" "E:\MYBACKUP\My Documents\" /D/E/C/Y

Copy entire drive in to a mapped network drive while ignoring any errors in network restartable mode.

>xcopy *.* z:\Netmirror /E /V /C /F /H /Y /Z 1>out.txt 2>err.txt

Copy a single file without prompt if it is a file or a directory

>cmd /c echo F | xcopy "c:\directory 1\myfile" "c:\directory 2\myfile"

See also

References

{{Reflist}}

Further reading

  • {{Cite book|author-last=Cooper|author-first=Jim|title=Special Edition Using MS-DOS 6.22, Third Edition|date=2001|publisher=Que Publishing|isbn=978-0789725738}}
  • {{Cite book|author1=Kathy Ivens|author2=Brian Proffit|year=1993|title=OS/2 Inside & Out|publisher=Osborne McGraw-Hill|isbn=978-0078818714}}
  • {{Cite book|author=John Paul Mueller|year=2007|title=Windows Administration at the Command Line for Windows Vista, Windows 2003, Windows XP, and Windows 2000|publisher=John Wiley & Sons|isbn=978-0470165799}}