Per complementobriantist's helpful answer re -NoNewline
:
Quanto segue si applica non solo ai Out-File
, ma analogamente a Set-Content
/Add-Content
pure; come indicato, -NoNewline
richiede PSv5 +.
noti che -NoNewline
significa che con multipli oggetti nell'output, non è solo un trascinamento nuova riga (interruzione di riga) che viene soppressa, ma eventuali nuove righe.
In altre parole: le rappresentazioni di stringa degli oggetti di input sono concatenate direttamente, senza un separatore (terminatore).
Pertanto, i seguenti comandi provoca lo stesso contenuto del file (TestTest
senza fine riga):
# 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
al fine di Consiglio newlines solo tra, ma non anche dopo dell'uscita oggetti, è necessario unire gli oggetti con newlines in modo esplicito:
"Test", "Test" -join "`r`n" | Out-File -encoding ascii test.txt -NoNewline
Per creare newline LF solo stile Unix, utilizzare "`n"
anziché "`r`n"
.
Caveat:
La soluzione sopra -join
converte implicitamente oggetti in ingresso, stringhe, se non sono già e lo fa chiamando il metodo NET .ToString()
su ciascun oggetto, che spesso produce una diversa rappresentazione rispetto a quella che Out-File
creerebbe direttamente, perché Out-File
utilizza il formatter di output predefinito di PowerShell; ad esempio, confrontare le uscite di (Get-Date).ToString()
e solo Get-Date
.
Se l'ingresso comprende solo stringhe e/o non-stringhe cui .ToString()
rappresentazione è soddisfacente, la soluzione di cui sopra funziona, ma nota che è allora generalmente preferibile utilizzare il Set-Content
cmdlet, che applica lo stesso in stringa implicitamente.
Per una discussione completa delle differenze tra Out-File
e Set-Content
, vedere this answer di mine.
Se il vostro input ha i non-stringhe che si desidera essere formattato come avrebbero stampare alla console, non v'è in realtà alcuna soluzione semplice: mentre è possibile utilizzare Out-String
per creare rappresentazioni di stringa per-oggetto con il formattatore predefinito, La mancanza di Out-String
di -NoNewline
(a partire dalla v5.1; this GitHub issue suggerisce di introdurla) produrrebbe invariabilmente una nuova riga finale.
Questo è un punto importante! – briantist