在xcopy中排除多个文件扩展名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在xcopy中排除多个文件扩展名相关的知识,希望对你有一定的参考价值。

我有几个扩展,我想从xcopy中排除。我不知道那些文件夹/目录可能存在。

以下是我正在使用的命令:

xcopy /r /d /i /s /y C:\test1 C:\test2 /exclude:.txt+.exe

Anh对此有所帮助?

答案

你在寻找的是:

xcopy /R /D /I /S /Y /EXCLUDE:exclude.txt "C:\test1" "C:\test2"

连同以下exclude.txt的内容:

.txt
.exe

然而,/EXCLUDExcopy选项非常差。它并不真正排除具有给定扩展名的文件,它实际上排除了其完整路径在任何位置包含.txt.exe的所有项目。假设有一个源文件C:\test1\my.txt.files\file.ext,它也将被排除。


有几种方法可以解决这个问题,其中一些我想告诉你:

  1. 使用robocopy command及其/XF选项: robocopy "C:\test1" "C:\test2" /S /XO /XF "*.txt" "*.exe"
  2. 创建一个,使用for /F loopxcopy /L来预过滤文件: set /A "COUNT=0" for /F "delims=" %%F in (' rem/ // List files that would be copied without `/L`; remove summary line: ^& ^ cd /D "C:\test1" ^&^& xcopy /L /R /D /I /S /Y "." "C:\test2" ^| find ".\" ') do ( rem // Check file extension of each file: if /I not "%%~xF"==".txt" if /I not "%~xF"==".exe" ( rem // Create destination directory, hide potential error messages: 2> nul mkdir "C:\test2\%%~F\.." rem // Actually copy file, hide summary line: > nul copy /Y "C:\test1\%%~F" "C:\test2\%%~F" && ( rem // Return currently copied file: set /A "COUNT+=1" & echo(%%~F ) || ( rem // Return message in case an error occurred: >&2 echo ERROR: could not copy "%%~F"! ) ) ) echo %COUNT% file^(s^) copied.

以上是关于在xcopy中排除多个文件扩展名的主要内容,如果未能解决你的问题,请参考以下文章

使用 xcopy 进行并行复制

xcopy 高级使用

bat文件xcopy指令

xcopy命令总结

DOS中XCOPY与COPY 的联系与区别是啥,如何使用

使用bat的Xcopy命令把一个目录下的指定多个不同的文件类型复制到别一个文件夹