4

Я пытаюсь использовать XCOPY для копирования каталога, который выглядит следующим образом:

-MainFolder
 -ManyFoldersIWantToCopy
 -ManyFoldersIWantToCopy
 -...
 -Source Code

Я хочу использовать параметр /EXCLUDE для копирования всех папок, кроме Source Code .

Я попытался использовать следующее, но мне не повезло:

xcopy "Source" "Destination" /EXCLUDE:"\Source Code\" /E /C /R /I /K /Y

Я получаю сообщение об ошибке: « Can't read file: "\Source Code\" .

Я пытался удалить все двойные кавычки, используя вместо них одинарные кавычки, с / без \, но я получаю то же сообщение об ошибке.

Есть идеи?

3 ответа3

6
C:\>xcopy /?
...
  /EXCLUDE:file1[+file2][+file3]...
           Specifies a list of files containing strings.  Each string
           should be in a separate line in the files.  When any of the
           strings match any part of the absolute path of the file to be
           copied, that file will be excluded from being copied.  For
           example, specifying a string like \obj\ or .obj will exclude
           all files underneath the directory obj or all files with the
           .obj extension respectively.

Вам нужно поместить "Исходный код" в файл и указать этот файл в командной строке.

2

Я считаю, что эта ошибка нуждается в дополнительном объяснении. Я нашел этот пост в блоге очень информативным.

По сути, вам нужно использовать старую версию 8.3 (короткие имена DOS в пути исключения). Вы можете определить короткие имена, выполнив команду «DIR /X» из командной строки после смены каталога на родительский для папки (вам нужно имя 8.3). Жаль, что MS не обновила эту команду для поддержки длинных имен файлов.

Я бы предложил использовать robocopy, если вы не хотите использовать короткие пути / имена файлов. Конечно, я полагаю, вы могли бы поместить длинные имена во внешний «exc_files.txt». Это, похоже, поддерживается XCopy.

0

Я успешно использовал флаг EXPLUDE xcopy, не заключая строки в кавычки, хотя многие пути содержали пробелы. Так что для меня (Win7 Home Premium SP1 ремонт установить DOS приглашение) возврат каретки был адекватным разграничением. Я просто использовал простой текстовый файл в формате:

file 1.txt
path 2\file 2.text
and so on\and so forth.txt

затем ИСКЛЮЧИТЕ:F:\filename.txt в качестве флага xcopy. Я не включил букву диска в строки в файле исключения (как подтверждено в /? страница нужна только частичное совпадение). Он пропустил названные файлы очень быстро. Я совместил это с /D:21-21-2014, чтобы успешно получать только последние файлы и множество других тегов.

Чтобы подтвердить, я не использовал старые короткие имена DOS, вопреки выводу Кена Ричарда выше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .