powershell powershell-v2.0

Prevenga la nueva línea final en el comando de salida de PowerShell



powershell-v2.0 (2)

En PowerShell 5.0+, usarías:

"TestTest" | Out-File -encoding ascii test.txt -NoNewline

Pero en versiones anteriores simplemente no puedes con ese cmdlet.

Prueba esto:

[System.IO.File]::WriteAllText($FilePath,"TestTest",[System.Text.Encoding]::ASCII)

¿Cómo evito que el comando Out-File PowerShell agregue una nueva línea después del texto que genera?

Por ejemplo, ejecutar el siguiente comando produce un archivo con el contenido "TestTest / r / n" en lugar de solo "TestTest".

"TestTest" | Out-File -encoding ascii test.txt


Para complementar la útil respuesta del -NoNewline re -NoNewline :

Lo siguiente se aplica no solo a Out-File , sino también a Set-Content / Add-Content ; como se indica, -NoNewline requiere PSv5 +.

Tenga en cuenta que -NoNewline significa que con varios objetos para generar , no se suprime solo una nueva línea de seguimiento (salto de línea), sino cualquier nueva línea.

En otras palabras: las representaciones de cadena de los objetos de entrada se concatenan directamente, sin un separador (terminador) .

Por lo tanto, los siguientes comandos dan como resultado el mismo contenido del archivo ( TestTest sin una nueva línea final):

# Single input string "TestTest" | Out-File -encoding ascii test.txt -NoNewline # Equivalent command: 2-element array of strings that are directly concatenated. "Test", "Test" | Out-File -encoding ascii test.txt -NoNewline

Para colocar nuevas líneas solo entre , pero no también después de los objetos de salida, debe unir los objetos con nuevas líneas explícitamente :

"Test", "Test" -join "`r`n" | Out-File -encoding ascii test.txt -NoNewline

Para crear nuevas líneas LF de estilo Unix, use "`n" lugar de "`r`n" .

Advertencia :

La solución de la -join anterior convierte de manera implícita los objetos de entrada en cadenas, si aún no lo están y lo hace llamando al .ToString() .NET .ToString() en cada objeto, que a menudo produce una representación diferente de la que Out-File cree directamente, porque Out-File utiliza el formateador de salida predeterminado de PowerShell; por ejemplo, compare los resultados de (Get-Date).ToString() y solo Get-Date .

Si su entrada comprende solo cadenas y / o no cadenas cuya representación .ToString() es satisfactoria , la solución anterior funciona, pero tenga en cuenta que generalmente es preferible usar el cmdlet Set-Content , que aplica la misma clasificación de forma implícita.
Para una discusión completa de las diferencias entre Out-File y Set-Content , vea esta respuesta mía.

Si su entrada tiene cadenas que no desea que se formateen tal como se imprimirían en la consola, en realidad no hay una solución simple: mientras que puede usar Out-String para crear representaciones de cadena por objeto con el formateador predeterminado, Out-String falta de -NoNewline de -NoNewline (a partir de v5.1; este problema de GitHub sugiere introducirla) invariablemente generaría nuevas líneas finales.