Предварительная обработка файла для всех файлов .cs в каталоге и подкаталоге с помощью PowerShell
-
09-06-2019 - |
Вопрос
Как я могу предварительно добавить (вставить в начало файла) файл ко всем файлам определенного типа в папке и вложенных папках с помощью Powershell?
Мне нужно добавить стандартный заголовочный файл в all .cs, и я пытался использовать Powershell для этого, но, хотя я смог добавить его в нескольких строках кода, я застрял при попытке его предварительной загрузки.
Решение
Вот очень простой пример, который покажет вам один из способов, как это можно сделать.
$Content = "This is your content`n"
Get-ChildItem *.cs | foreach-object {
$FileContents = Get-Content -Path $_
Set-Content -Path $_ -Value ($Content + $FileContents)
}
Другие советы
Понятия не имею, но если у вас есть код для добавления, просто сделайте это наоборот.Что -то вроде
- переименовать существующий файл,
- создайте пустой файл с таким же именем, как указано выше
- добавить заголовок к новому пустому файлу,
- добавить переименованный файл к предыдущему,
- удалить переименованный файл
С точки зрения алгоритма, на самом деле вам не нужен временный файл :
1) прочитайте содержимое файла, который вам нужно изменить
2) измените содержимое ( в виде строки, предполагая, что у вас есть содержимое в переменной с именем content ) , например :содержимое = заголовок + содержимое
3) выполните поиск в начале файла, для каждого языка есть свой метод поиска или его эквивалент
4) напишите новый контент
5)обрежьте файл в позиции, возвращаемой указателем на файл
Вот он у вас, никакого временного файла.:)