Пакетный файл цикла, чтобы захватить все папки в каталоге, кроме определенной папки - PullRequest
2 голосов
/ 19 июля 2011

Просто интересно, как сделать это лучше всего в одном пакетном файле.У меня есть папка с именем C: \ Program \ Foo, и я хочу получить все папки, кроме папки для тестирования, внутри foo, и я хочу скопировать в D: \, поэтому в D: \ foo будет, но нет тестовой папки.

Есть ли способ, которым я могу перебрать каждую папку и проверить, не указано ли определенное имя?

с помощью / Exclude означало бы, что мне понадобится дополнительный текстовый файл с надписью "Тестирование"он

Ответы [ 3 ]

1 голос
/ 20 июля 2011

Я не понимаю, почему вы не можете создать временный файл исключения (используя временную папку, то есть):

@ECHO OFF
FOR %%F IN ("%TEMP%\exclude.txt") DO SET tmpf=%%~sF
ECHO Testing>%tmpf%\exclude.txt
XCOPY <i>source</i> <i>destination</i> /EXCLUDE:%tmpf%\exclude.txt <i>other options</i>

Примечание: XCOPY не распознаетдвойные кавычки в качестве разделителей пути в опции /EXCLUDE не предлагают альтернативы для указания путей с пробелами, что может быть проблемой в системах Windows XP.Это ограничение можно обойти, заменив исходный путь его аналогом, состоящим только из коротких имен.Вот что делает цикл FOR в приведенном выше сценарии для папки %TEMP%.

0 голосов
/ 19 июля 2011

Используйте опцию EXCLUDE и поместите ваши исключения в этот файл.Это позволит вам исключить целые каталоги.

http://www.pcreview.co.uk/forums/using-xcopy-backup-can-exclude-some-directories-t489674.html

xcopy "c: \ document and settings" "i: \ documents and settings \" / s / d / EXCLUDE: c:\ a.txt

a.txt содержит

\ temp \ \ временные файлы Интернета \

Возможно, вам придется использовать более короткие имена файлов DOS.

0 голосов
/ 19 июля 2011

Можно ли использовать ROBOCOPY?

ROBOCOPY C:\Program\Foo D:\ * /E /XD Test
  • /E копирует подпапки и файлы
  • /XD исключает каталоги
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...