TransWikia.com

How to exclude a file type in XCOPY without passing a file?

Stack Overflow Asked on December 7, 2021

I have 5 txt files in my C drive, say

result_1.0.1.txt
result_1.0.1_tmp1.txt
result_1.0.1_tmp2.txt
result_1.0.1_tmp3.txt
result_1.0.1_tmp4.txt

At any point, there will be only 1 valid result txt file (in this case it is result_1.0.1.txt), and multiple tmp files. I want to copy only the result_1.0.1.txt using a generic XCOPY command. The version number in the file can be different each time. Earlier, only the result_<version>.txt file used to be present, so my XCOPY command looked like this

xcopy /Y "C:*.txt" result.txt

To exclude the ‘tmp’ files, XCOPY requires a filename as the argument for /EXCLUDE parameter. Instead of that, is there a way to pass a wildcard argument? Something like this –

xcopy /Y "C:*.txt" /EXCLUDE:"*tmp*" result.txt

One Answer

Per the explanation here, you need to create a new file with the patterns you want to exclude. Using a wildcard is not possible.

So you can create a file exclusions.txt (in a different directory) with the contents:

_tmp

That's all.

Then you can run

xcopy /Y "C:*.txt" /EXCLUDE:exclusions.txt result.txt

You can also generate exclusions.txt dynamically as is done in this Super User answer.

Or, if your file names will always be in the exact format you're showing, you could skip using EXCLUDE entirely and instead use something like:

xcopy /Y "C:*.?.txt" result.txt

The ? is a single character wildcard, so this will match any file ending in .1.txt, .2.txt, etc., which your tmp files don't have. You could even get more specific and use *.?.?.txt or result*.?.?.txt.

Answered by jdaz on December 7, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP