Частичная выгрузка конфигурации

1. AlexPC 23.07.19 08:02 Сейчас в теме
Добрый день.

Начали использовать SonarQube для контроля качества кода. Сама разработка ведется в конфигураторе с использованием хранилища.
В работе используем типовые конфигурации с доработками. Контроль качества кода типовой конфигурации не интересен, интересует только контроль доработок, да и выполняется он быстрее :) полная проверка конфигурации просто умирает из-за нехватки памяти.

Соответственно, стоит задача автоматизировать выгрузку конфигурации, но сделать ее частичной. Поскольку частичной выгрузки не нашел, то смотрю в сторону полной выгрузки с дальнейшей обработкой какими-нибудь инструментами с использованием регулярных выражений. Для начала хочу получить структуру каталогов с файлами, в названии которых присутствует определенный префикс "МояДоработка" например. В идеале - файлы, имена которых содержат префикс, плюс файлы в тексте которых присутствует определенные комментарии вроде "Иванов ++".

И да, прошу помощи :)
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. AlexPC 23.07.19 11:31 Сейчас в теме
На первую часть вопроса я нашел ответ:

В powershell например:
$src = "Папка-источник";
$dst = "Папка-приемник";
Get-ChildItem -path $dst | Remove-Item -Recurse -Confirm:$false -Force;
foreach ($dirname in Get-ChildItem -Path $src -Recurse -Name -attributes D | Select-String -pattern "МояДоработка_")
{Copy-Item "$src$dirname" -Destination "$dst$dirname" -Force -Recurse -Filter "*.bsl"}
4. AlexPC 24.07.19 08:38 Сейчас в теме
(2)Первую часть пришлось подкрутить, задваивались файлы в подчиненных каталогах.
Остановился на следующем варианте:
$src = "Папка-источник";
$dst = "Папка-приемник";
Get-ChildItem -path $dst | Remove-Item -Recurse -Confirm:$false -Force;
foreach ($dirname in Get-ChildItem -Path $src -Recurse -Name -Directory | Select-String -pattern "МояДоработка_")
{foreach ($filename in Get-Item -Path "$src$dirname\\*" -Filter "*.bsl") {echo F | xcopy "$filename" ("$dst$dirname"+$filename.name) /Y > null}}
7. AlexPC 24.07.19 09:51 Сейчас в теме
(4)Исправление опечатки:

$src = "Папка-источник";
$dst = "Папка-приемник";
Get-ChildItem -path $dst | Remove-Item -Recurse -Confirm:$false -Force;
foreach ($dirname in Get-ChildItem -Path $src -Recurse -Name -Directory | Select-String -pattern "МояДоработка_")
{foreach ($filename in Get-Item -Path "$src$dirname\\*" -Filter "*.bsl") {echo F | xcopy "$filename" ("$dst$dirname"+$filename.name) /Y > nul}}
9. AlexPC 25.07.19 07:23 Сейчас в теме
(7) Добавил использование стандартного вывода powershell, другие варианты не работали:
$src = "Папка-источник";
$dst = "Папка-приемник";
Get-ChildItem -path $dst | Remove-Item -Recurse -Confirm:$false -Force;
foreach ($dirname in Get-ChildItem -Path $src -Recurse -Name -Directory | Select-String -pattern "МояДоработка_")
{foreach ($filename in Get-Item -Path "$src$dirname\\*" -Filter "*.bsl") {echo F | xcopy "$filename" ("$dst$dirname"+$filename.name) /Y | out-null}}
3. AlexPC 23.07.19 12:51 Сейчас в теме
Вторую часть решил так:

$src = "Папка-источник";
$dst = "Папка-приемник";
foreach ($filename in Get-ChildItem -Path $src -Recurse -Filter "*.bsl" | Select-String -pattern "Иванов++")
{echo F| xcopy $filename.path ($filename.path -replace $src,$dst) /Y}

осталось понять как получить список уникальных файлов во второй части
5. AlexPC 24.07.19 09:08 Сейчас в теме
(3)Нашел решение
$src = "Папка-источник";
$dst = "Папка-приемник";
foreach ($filename in Get-ChildItem -Path $src -Recurse -Filter "*.bsl" | Select-String -pattern "Иванов++" -List)
{echo F| xcopy $filename.path ($filename.path -replace $src,$dst) /Y > null}
6. AlexPC 24.07.19 09:50 Сейчас в теме
(5)Исправление опечатки:

$src = "Папка-источник";
$dst = "Папка-приемник";
foreach ($filename in Get-ChildItem -Path $src -Recurse -Filter "*.bsl" | Select-String -pattern "Иванов++" -List)
{echo F| xcopy $filename.path ($filename.path -replace $src,$dst) /Y > nul}
8. AlexPC 25.07.19 07:22 Сейчас в теме
(6) Добавил использование стандартного вывода powershell, другие варианты не работали:
$src = "Папка-источник";
$dst = "Папка-приемник";
foreach ($filename in Get-ChildItem -Path $src -Recurse -Filter "*.bsl" | Select-String -pattern "Иванов++" -List)
{echo F| xcopy $filename.path ($filename.path -replace $src,$dst) /Y | out-null}
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот