HOWTO · PowerShell
Cmdlet Set-Content do PowerShell
O cmdlet Set-Content é amplamente utilizado para escrever novo conteúdo de texto em um arquivo existente ou substituir um conteúdo de texto existente por um valor de texto fornecido. Consiste em vários argumentos opcionais para facilitar diferentes recursos que são úteis para os usuários.
Às vezes, podemos precisar escrever o mesmo conteúdo de texto em vários arquivos de texto. O PowerShell fornece um cmdlet útil para escrever conteúdo de texto via linha de comando.
Neste artigo, focaremos no cmdlet Set-Content.
O Cmdlet Set-Content no PowerShell
O cmdlet Set-Content escreve novo conteúdo de texto ou substitui o texto existente em um arquivo. Isso é mais semelhante ao operador > no Linux.
O cmdlet Set-Content difere do cmdlet de processamento de string Add-Content, que adiciona texto a um arquivo especificado. O sc pode ser usado como um alias para o comando Set-Content.
Sintaxe:
Set-Content
[-Path_to_file] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-NoNewline]
[-Encoding <Encoding>]
[-AsByteStream]
[-Stream <string>]
[<CommonParameters>]
O comando aceita uma quantidade considerável de argumentos, e o propósito de alguns foi descrito na seção seguinte.
| Parâmetro | Descrição |
|---|---|
-Path_to_file |
Você pode especificar um caminho de arquivo de texto existente ou criar um novo no caminho dado. |
-Value |
Este parâmetro é usado para passar o conteúdo de texto que você escreverá. |
-Force |
O argumento -Force substitui o conteúdo no arquivo somente leitura. |
-Encoding |
A codificação de texto do arquivo de destino é configurada como utf8NoBOM por padrão. |
-Exclude |
Os itens que precisam ser excluídos nesta operação são especificados como um array de strings. |
-Include |
Este é o oposto do argumento -Exclude. Este argumento especifica um array de itens que precisam ser incluídos na operação Set-Content. |
-PassThru |
Quando o argumento PassThru é especificado, o comando exibe o conteúdo de texto que foi adicionado ao arquivo de texto. |
Geralmente, o parâmetro -Value é usado para especificar o conteúdo de texto escrito no arquivo. Além disso, você pode canalizar o conteúdo de texto de outro objeto também.
Se você passar um objeto não-string para o comando Set-Content, ele primeiro converterá o objeto não-string em uma string e a escreverá no arquivo.
Use o Cmdlet Set-Content para Escrever Conteúdo de Texto em um Único Arquivo
Vamos escrever conteúdo de texto em um arquivo chamado sometext.txt que não existe atualmente. Assim, o comando Set-Content criaria este arquivo primeiro e escreveria o conteúdo passado com o argumento -Value.
Comando:
Set-Content -Path D:\codes\sometext.txt -Value "This should create a new file called sometext.txt and write this text to it..."
Saída:
Use o Cmdlet Set-Content para Substituir o Conteúdo de Texto em Múltiplos Arquivos
Vamos assumir que temos três arquivos file1.txt, file2.txt e file3.txt. Substituiremos o conteúdo desses três arquivos pelo seguinte texto.
Hello, i would be appeared in all the three files!
Neste caso, o comando Set-Content usa caracteres curinga para corresponder aos três arquivos dados.
Comando:
Set-Content -Path D:\codes\file*.txt -Value "Hello, i would be appeared in all the three files!"
Os três arquivos correspondem ao padrão especificado por file* txt, o que força o comando a corresponder a todos os arquivos que começam com a frase file.
Saída:
Use o Set-Content para Passar o Conteúdo de Texto Através de um PIPE
Não é necessário especificar sempre o argumento -Value. Em vez disso, podemos PIPE um objeto de texto para o Set-Content da seguinte forma.
Comando:
(Get-Content D:\codes\file1.txt).replace('all the three files!', 'file4.txt') | Set-Content D:\codes\file4.txt
O cmdlet Get-Content lê o conteúdo de texto do arquivo file1.txt. Em seguida, ele usa o comando replace para substituir o texto todos os três arquivos! pelo file4.txt.
Finalmente, o texto construído seria escrito no arquivo file4.txt.
Saída: