Что вы ищете это:
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"
Создать batch-file , используя 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: ^&^
xcopy /L /R /D /I /S /Y "C:\test1" "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' исключает переключатель принимать только файлы из где прочитать список элементов для исключения. Создайте файл или используйте 'robocopy' и'/xf' переключатель –
Отлично ..! Работает отлично. Большое спасибо за вашу помощь..! – user2817712
Параметр '/ EXCLUDE'' xcopy' на самом деле не делает то, что вы хотите, он не исключает файлы с расширениями '.txt' и' .exe', он исключает все элементы, чьи полные пути содержат '.txt' или '.exe' в любой позиции; например, есть исходный файл 'C: \ test1 \ my.txt.files \ file.ext', он также будет исключен ... – aschipfl