Powershell agrega texto del archivo csv al archivo de texto

Powershell agrega texto del archivo csv al archivo de texto

Estoy intentando copiar el contenido del archivo csv y agregarlo a un archivo de texto. Copiar y agregar funciona, pero el formato adjunto es extraño.

Este es el comando que uso:

Get-Content -Path myfile1.csv | Seleccionar-objeto-saltar 1 | Out-File mynewfile.txt -Agregar

El texto adjunto se ve así cuando se abre en el Bloc de notas:

1 0 2 3 8 9, 1, A B C, P 2

en lugar de

102389,1,ABC,P2

Hay un espacio entre cada personaje. Simplemente cambiar el nombre del .csv a .txt no ayudó.

Respuesta1

Intenta usarAgregar contenidocmdlet:

El cmdlet Add-Content agrega contenido a un elemento o archivo específico. Puede especificar el contenido escribiéndolo en el comando o especificando un objeto que contenga el contenido.

Get-Content -Path myfile1.csv | Select-object -skip 1 | Add-Content mynewfile.txt

Respuesta2

En PowerShell 5.1, la codificación predeterminada Out-FileesUnicode(UTF16-LE), mientras que en PowerShell 7.x la codificación predeterminada esutf8NoBOM.
Aparentemente, su archivo de entrada está codificado de manera diferente, como ASCII o UTF-8. y al agregarle texto UTF16-LE, el resultado es lo que experimenta.

Out-File tiene un -Encodingparámetro, por lo que puede corregir su código agregando -Encoding defaultO usando Add-Contenten lugar de Out-File.

Codificación Defaultes la codificación que corresponde a la página de códigos activa del sistema (generalmente ANSI).
Add-Content también tiene un parámetro -Encoding. En PowerShell 5.1 el valor predeterminado es Default. En PowerShell 7.x la codificación predeterminada es utf8NoBOM.

información relacionada