/ исключить в xcopy только для типа файла - PullRequest
60 голосов
/ 23 ноября 2010

У меня есть пакетный файл для копирования файлов из Visual Studio в мою веб-папку.Я хочу скопировать все файлы в моем веб-проекте, КРОМЕ для файлов * .cs.Я не могу заставить это работать:

xcopy /r /d /i /s /y /exclude:".cs" C:\dev\apan C:\web\apan

Есть советы?Я просто получаю код выхода 4, когда пытаюсь запустить это.

Ответы [ 4 ]

109 голосов
/ 23 ноября 2010

Аргумент /EXCLUDE: ожидает файл, содержащий список исключенных файлов.

Создайте файл с именем excludedfileslist.txt, содержащий:

.cs\

Затем выполните следующую команду:

xcopy /r /d /i /s /y /exclude:excludedfileslist.txt C:\dev\apan C:\web\apan

В качестве альтернативы вы можете использовать Robocopy , но для этого потребуется установить / скопировать robocopy.exe на машины.

Обновление

Анонимный комментарийредактирование, которое просто гласило: «Это решение исключает также файл CSS!»*

Также исключает все следующие:

  • file1.cs
  • file2.css
  • dir1.cs\file3.txt
  • dir2\anyfile.cs.something.txt

Иногда люди не читают или не понимают справку команды XCOPY, вот элемент, который я хотел бы выделить:

Использование / исключение

  • Список каждой строки в отдельной строке в каждом файле.Если какая-либо из перечисленных строк соответствует какой-либо части абсолютного пути файла, который нужно скопировать, этот файл затем исключается из процесса копирования.Например, если вы укажете строку «\ Obj \», вы исключите все файлы из каталога Obj.Если вы укажете строку «.obj», вы исключите все файлы с расширением .obj.

Как показано в примере, исключаются «все файлы с расширением .obj», но это не так.не указывайте, что он также исключает файлы или каталоги с именами file1.obj.tmp или dir.obj.output\example2.txt.

Существует также способ исключения .css файлов, измените файл excludedfileslist.txt так, чтобы он содержал только:

.cs\

(обратите внимание на обратную косую черту в конце).

Вот полная последовательность тестов для вашей справки:

C:\test1>ver

Microsoft Windows [Version 6.1.7601]

C:\test1>md src
C:\test1>md dst
C:\test1>md src\dir1
C:\test1>md src\dir2.cs
C:\test1>echo "file contents" > src\file1.cs
C:\test1>echo "file contents" > src\file2.css
C:\test1>echo "file contents" > src\dir1\file3.txt
C:\test1>echo "file contents" > src\dir1\file4.cs.txt
C:\test1>echo "file contents" > src\dir2.cs\file5.txt

C:\test1>xcopy /r /i /s /y .\src .\dst
.\src\file1.cs
.\src\file2.css
.\src\dir1\file3.txt
.\src\dir1\file4.cs.txt
.\src\dir2.cs\file5.txt
5 File(s) copied

C:\test1>echo .cs > excludedfileslist.txt
C:\test1>xcopy /r /i /s /y /exclude:excludedfileslist.txt .\src .\dst
.\src\dir1\file3.txt
1 File(s) copied

C:\test1>echo .cs\ > excludedfileslist.txt
C:\test1>xcopy /r /i /s /y /exclude:excludedfileslist.txt .\src .\dst
.\src\file2.css
.\src\dir1\file3.txt
.\src\dir1\file4.cs.txt
3 File(s) copied

Этот тест был выполнен по команде Windows 7в Windows 10 "10.0.14393".

Обратите внимание, что в последнем примере исключено .\src\dir2.cs\file5.txt, что может быть или не быть неожиданным для вас.

7 голосов
/ 18 декабря 2013

В моем случае мне пришлось начинать список исключаемых расширений из второй строки, потому что xcopy проигнорировал первую строку.

5 голосов
/ 16 ноября 2012

Измените * .cs на .cs в excludefileslist.txt

1 голос
/ 02 декабря 2014

Для исключения нескольких типов файлов вы можете использовать «+» для объединения других списков. Например:

xcopy /r /d /i /s /y /exclude:excludedfileslist1.txt+excludedfileslist2.txt C:\dev\apan C:\web\apan

Источник: http://www.tech -recipes.com / rx / 2682 / xcopy_command_using_the_exclude_flag /

...