Como alterar o formato da data em vários arquivos de texto no powershell?

2

Olá, tenho cerca de 5000 arquivos de texto (TXT) em um diretório. Os arquivos são delimitados por vírgulas. O que eu estou tentando fazer é mudar o formato da data (é armazenado na primeira coluna de cada arquivo) de M / d / aaaa para MM / dd / aaaa. Há cerca de 1 milhão de linhas nesses 5000 arquivos, então eu espero que haja uma maneira eficiente de fazê-lo. Li em algum lugar que para lidar com um grande número de dados um comando StreamWriter é um caminho a percorrer, mas não tenho certeza se pode ser usado no meu caso. Obrigado por qualquer sugestão.

Estou usando este script para excluir a segunda e última linha de vários arquivos de texto usando o StreamWriter. É muito rápido e eficiente. Espero que, com algumas pequenas modificações, possa ser usado para alterar os formatos de data na primeira coluna. Eu tenho apenas 2 semanas de experiência com o PS, então isso é um grande desafio para mim.

dir *.txt | %{     
$content = gc $_.FullName
$output = @($content | select -First 1 )
$output += $content[2..($content.count -2)]
$sw = New-Object System.IO.StreamWriter($_.FullName,$false)
$output | %{$sw.WriteLine($_)}
$sw.close()
}
    
por paul 05.02.2015 / 17:41

1 resposta

0

Você diz que seus arquivos de texto são delimitados por vírgulas. Bem, você poderia usar Import-Csv -Path C:\file.txt . Em seguida, o PowerShell transforma cada linha em um objeto. Objetos são mais fáceis / precisos de manipular do que texto. Os objetos podem ser "mais lentos", mas 5000 arquivos / 1 milhão de linhas não são nada para um laptop barato. Não tenho certeza de como o PS lidaria com a primeira e a última linha de seus arquivos, pois não sei o formato.

Converter as datas é fácil. Se eu der a Get-Date uma string de data formatada como m / d / yyyy, eu uso o parâmetro -UFormat para formatar a data como eu quiser. Get-Help Get-Date -Full

PS> Get-Date 2/8/2016 -UFormat "%m/%d/%Y"
02/08/2016
    
por 10.02.2015 / 08:39