我有几个扩展,我想从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
然而,/EXCLUDE
的xcopy
选项非常差。它并不真正排除具有给定扩展名的文件,它实际上排除了其完整路径在任何位置包含.txt
或.exe
的所有项目。假设有一个源文件C:\test1\my.txt.files\file.ext
,它也将被排除。
有几种方法可以解决这个问题,其中一些我想告诉你:
robocopy
command及其/XF
选项:
robocopy "C:\test1" "C:\test2" /S /XO /XF "*.txt" "*.exe"
for /F
loop和xcopy /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.