Использование Robocopy для исключения расширения файла из корневого каталога

У меня есть каталог, который я хочу скопировать в другой каталог с помощью Robocopy.exe.

Мой план состоит в том, чтобы исключить несколько файлов из корня исходного каталога. На самом деле, я хотел бы ТОЛЬКО исключить файлы .html из КОРНЯ каталога.

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

Поэтому текущий результат моей операции таков, что если я использую:

/E /XF "*.html"

Я собираюсь исключить все файлы HTML для всего сайта.

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

Что-то типа:

/E /XF "c:\releases\website_source\*.html"

person Karl    schedule 30.06.2011    source источник
comment
Хорошо, это затруднительное положение - как насчет передачи файлов, но удаления файлов .html из места назначения после этого?   -  person Mark Robinson    schedule 09.08.2012


Ответы (2)


Итак, без какой-либо реальной причины я должен был найти способ ответить на этот вопрос.

Я мог найти только «достойный» способ, используя powershell, и он все еще беспорядочный.

Итак, сначала отредактируйте следующий powershell в соответствии с вашими потребностями:

$files = Get-ChildItem c:\releases\website_source -Filter {*.html}
"/XF" > c:\temp\exclude.rcj
foreach ($f in $files) {$f.FullName >> c:\temp\exclude.rcj}

Это создает список файлов после команды /XF в файле «задания» robocopy. Затем вызовите команду robocopy как обычно, но добавьте /job:c:\temp\exclude.rcj в конец. Это в основном упростит написание сложного /XF для каждого корневого HTML-файла в вашем скрипте.

Обратите внимание, что вы можете сделать это с помощью пакетного файла, но я лучше использую powershell, чем пакет для зацикливания и тому подобное.

Да, я понимаю, что на данный момент это несколько устаревший вопрос, но мне нужно было что-то сделать.

person ArchGriffin    schedule 02.09.2012

Мое решение было бы неприличным, но очень простым для понимания. Я бы просто выполнил задачу с двухстрочным командным файлом. Robocopy корневую папку (но не подкаталоги), включая файлы .html. Затем следующая строка Robocopy, включая все сабвуферы (кроме *.html)

person Raiser    schedule 08.10.2012