spark108
@spark108

Как удалить комментарии из кода?

Есть рабочая регулярка для нахождения комментариев в коде
(\/\/(.*?)\n)|(\/\*(.*?)\*\/)

Есть папка под именем source в которой есть подпапки, в которых собственно размещены файлы с кодом (Например JS). Мне нужно при помощи cmd или PowerShell скрипта используя регулярку выше обработать все эти файлы и сохранить копии в папку runtime рядом с папкой source сохраняя дерево папок тем же, но уже без комментариев в файлах.

P.S. Я могу сделать программу консольную с таким функционалом, но думаю, что это излишне, по этому при помощи cmd или PowerShell (желательно). Сейчас хожу по сайтам ищу то что нужно, просто заранее создал вопрос, вдруг не найду в сети.
  • Вопрос задан
  • 313 просмотров
Решения вопроса 1
ApeCoder
@ApeCoder
регулярку выше обработать все эти файлы и

1) Обход всех папок - ls -Recurse -include *.js
сохранить копии в папку runtime рядом с папкой source сохраняя дерево папок тем же,

2) Вычисление нового пути (если source находится только на одном уровне ) $_.FullName -replace '\\source\\','\runtime\'
но уже без комментариев в файлах.

2) Преобразование
2.1) Прочитать - gc -Raw
2.3) Заменить -replace , ''
2.4) Записать - sc

Итого что-то типа
ls -recurse -include *.js | %{
     $targetPath = $_.FullName -replace '\\source\\','\runtime\'
     mkdir (Split-Path $targetPath) -force
     (gc $_.FullName -Raw) -Replace <REGEX>,'' | sc $targetPath 
}


Для отладки советую visual studio code c соответсвующим экстеншеном.

Учтите, что данный код теряет инфу о кодировке, у всех будет UTF8 с маркером порядка байтов (наберите sc -? если хотите установить другую кодировку)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы