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..."

criar arquivo de texto e escrever o comando de conteúdo

Saída:

criar arquivo de texto e escrever o conteúdo da 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!"

Use o Cmdlet Set-Content para Substituir o Conteúdo de Texto em Vários Arquivos Comando

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 Cmdlet Set-Content para Substituir o Conteúdo de Texto em Múltiplos Arquivos de 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:

Use Set-Content para passar o conteúdo de texto através de uma saída PIPE