xcopy


xcopy is a powerful command to repeatedly copy a directory and its sub-directories (including files) to a new destination. It can be particularly useful to developers in build scripts, or post-build event of a Visual Studio project. Here’s how I like to use it from the command line:

xcopy /Y /D /E /I /EXCLUDE:somefolder\exclude somefolder targetdir\somefolder

This will copy somefolder and all its files to targetdir/ The /Y option will suppress prompting the user for confirmation before replacing a file. The option /E tells xcopy to also copy empty folders. If you don’t want to copy empty folders, use the option /S instead. The /D option tells xcopy to only copy source files that have a more recent date and time than those at the target location. The /I option tells xcopy to create destination folder if it does not exist.

The /EXCLUDE option will leave out files and directories listed (one per line) in the file called exclude. This can be useful if you are using some kind of version control system. For example, if you have a line with the text .copyarea.db, a file used by ClearCase Remote Client, those files in any folder will not be copied to the target location.

In the post-build event of a Visual Studio project xcopy can be used thus:

xcopy /D /E /I /EXCLUDE:$(ProjectDir)..\somefolder\exclude $(ProjectDir)..\somefolder $(TargetDir)somefolder

The $(ProjectDir) macro expands to the full (absolute) path where the project is located. The $(TargetDir) macro expands to the absolute path where the build output is written. I suggest avoiding absolute paths, instead use paths relative to the project location, as shown above.

One thought on “xcopy

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s