В Windows, как я могу скопировать из источника в место назначения, с помощью фильтра каталогов. Фильтр должен выглядеть примерно так: *\app\src что означает: для каждой исходной подпапки ("каждая" означает совпадение *) найдите подпапку app\src и скопируйте ее в структуру папок с сохранением места назначения .

Я попытался сделать robocopy, но он говорит ОШИБКА: Неверный параметр # 3: "\app\src\" *:

robocopy C:\Projects C:\backup  *\app\src\

Как это сделать? (не обязательно в робокопии)

1 ответ1

0

Я бы использовал командный файл,

  • в качестве рекурсивного /s dir может иметь только одно имя
  • findstr используется для сопоставления только строк, заканчивающихся на обе директории
  • в найденной строке dir базовое имя заменяется на dest, чтобы сформировать правильное имя папки назначения.

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion

Set "Base=C:\Projects\"
Set "Dest=C:\backup\"
Set "Dir1=app"
Set "Dir2=src"

For /f "delims=" %%A in (
  'Dir /B/S/AD "%Base%\%Dir2%" ^|findstr /LEI "\%Dir1%\%Dir2%" '
) Do (
  Set "CopyTo=%%A"
  Set "CopyTo=!CopyTo:%Base%=%Dest%!\"
  If not Exist "!CopyTo!" Echo MD "!CopyTo!"
  Echo robo/x/copy "%%~fA\*" "!CopyTo!"
)

Если выходные данные выглядят нормально, удалите эхо в последних двух строках и настройте команду копирования.

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