Pré-pendente de um arquivo para todos os arquivos .cs no diretório e subdiretório usando o PowerShell
-
09-06-2019 - |
Pergunta
Como posso pré-pender (inserir no início do arquivo) um arquivo para todos os arquivos de um tipo em pasta e subpastas usando o Powershell?
Preciso adicionar um arquivo de cabeçalho padrão a todos os .cs e estava tentando usar o Powershell para fazer isso, mas embora consegui anexá-lo em algumas linhas de código, fiquei preso ao tentar anexá-lo previamente.
Solução
Aqui está um exemplo muito simples para mostrar uma das maneiras como isso pode ser feito.
$Content = "This is your content`n"
Get-ChildItem *.cs | foreach-object {
$FileContents = Get-Content -Path $_
Set-Content -Path $_ -Value ($Content + $FileContents)
}
Outras dicas
Não tenho ideia, mas se você tiver o código para anexar, faça o contrário.Algo como
- renomear arquivo existente,
- crie um arquivo vazio com o mesmo nome acima
- anexar cabeçalho ao novo arquivo vazio,
- anexar arquivo renomeado ao anterior,
- excluir arquivo renomeado
Falando algoritmicamente, você realmente não precisa de um arquivo temporário:
1) leia o conteúdo do arquivo que você precisa modificar
2) modifique o conteúdo (como uma string, supondo que você tenha o conteúdo em uma variável chamada content), assim:conteúdo = cabeçalho + conteúdo
3)procure até o início do arquivo, cada idioma possui um método de busca ou um equivalente de busca
4)escreva o novo conteúdo
5)truncar o arquivo na posição retornada pelo ponteiro do arquivo
Aí está, nenhum arquivo temporário.:)