Xcopy is a built in command on Windows OS. Copy is the other command we have on Windows, it can copy files from one directory to another. But it does not work for copying directories. Using xcopy we can copy directories also.
Copy all the files in one directory to another directory.
Xcopy /I Source_Directory Destination_directory
This would copy only the immediate files in the source directory to the destination. It would not copy files from sub directories. Adding /I switch will avoid the question to the user ‘Does the destination directory specify a file name or directory name on the target‘.
Copy a directory including all its files and sub directories to another location on the same drive or a different drive.
Xcopy /S /I /E Source_Directory Destination_directory
For example to copy all the files from D:\data\documents to the folder E:\Newfolder\documents we need to run the below command.
Xcopy /S /I /E D:\data\documents E:\Newfolder\documents
This command creates the folder E:\Newfolder\documents if it already does not exist. It also creates the same directory/file structure in the destination folder. If the destination folder already exists you do not need to add /I switch. If the folder does not exist and you do not specify /I you will be prompted to confirm if the destination is a filer or folder. This would cause issues if you want to run unattended or automated copying of files.
Copy files including hidden and system files.
The above command excludes hidden and system files from copying. If you want to these files also then you need to add /H option to your command. Then the command would be
Xcopy /S /I /E /H D:\data\documents E:\Newfolder\documents
/E option causes to copy empty sub directories to the destination folder.
If you add /H option the the command would also copy hidden and system files to the destination folder.
If you are trying to overwrite an existing file then add the option /Y so that you will not be prompted for confirmation for overwriting the file.
Copy files based on archive attribute
If you want to copy only the files that have archive attribute set, you can use /A and /M switches. Archive attribute indicates whether the file has been modified since the time the attribute was reset.
The command for this is:
Xcopy /A /I /S source_directory destination_directory.
The above command keeps the archive attribute set; It does not reset the attribute.
If you want to reset the archive attribute, you can use /M switch instead of /A. The command for this case would be:
Xcopy /M /I /S source_directory destination_directory
Exclude files in the copying
If you want to copy a directory to another location but want to exclude some files then you can use /EXCLUDE switch with Xcopy command. You need to put the list of the files to be excluded in a file and then specify this file with the /EXCLUDE switch.
Xcopy /I Sourcedir Destdir /EXCLUDE:filename
Copy the directory D:\docs to E:\newdocs\ excluding all pdf and mp3 files:
C:\>type 1.txt .pdf .mp3 C:\>Xcopy D:\docs E:\newdocs /EXCLUDE:1.txt
You can also specify the full names of the files. Each file name/pattern should be in a separate line.
The commands shown above can be used from batch files also. This command is available in Windows 7, XP, Vista, Server 2003 and Server 2008 editions.
Copy files based on modified date
Xcopy /D:dd-mm-yy /I sourcedir destinationdir
Example: To copy all the files in the directory ‘E:data’ that are modified on or after 1 st February 2011 to the folder ‘E:\backup‘
Xcopy /D:01-02-11 /I E:\data E:\backup
Xcopy is available in all newer versions of Windows – Windows 10, 7 and 8. Particularly, I’ve verified it to be working on Windows 10.
Backup files using xcopy command