2014-12-11 17 views
9

Sto cercando di capire alcuni comportamenti strani con questo cmdlet.Out-File -appende in Powershell non produce una nuova riga e spezza la stringa nei caratteri

Se si utilizza "Out-File -append Filename.txt" su un file di testo che ho creato e inserito il testo in tramite il menu di scelta rapida di Windows, la stringa si aggiungerà all'ultima riga di quel file come una serie di spazio personaggi separati.

Quindi:

"This is a test" | out-file -append textfile.txt 

produrrà: T h i s i s a t e s t

Questo non succederà se out-file crea il file, o se il file di testo non ha alcun testo in esso prima aggiungendo. Perché succede?

Noterò inoltre che la ripetizione del comando verrà aggiunta allo stesso modo alla stessa riga. Suppongo che non riconosca il carattere di interruzione di linea o di interruzione di riga o qualcosa a causa della codifica modificata?

+1

'Out-File' consente di default di codificare unicode per impostazione predefinita. Usa '-Encoding Ascii'. Nel tuo caso 'out-file -Encoding Ascii -append textfile.txt'. Aggiungi contenuto usa ascii per impostazione predefinita e aggiunge anche di default. '" Questo è un test "| Aggiungi-contenuto textfile.txt'. Non hai inviato una nuova riga in modo che non ne scriva uno su file. – Matt

+0

possibile duplicato di [NUL-byte tra ogni altro carattere nell'output] (http://stackoverflow.com/questions/11147179/nul-byte-between-every-other-character-in-output) – Matt

+0

@Matt Dovresti avere appena fatto il tuo primo commento una risposta e considerato il problema risolto. – TheMadTechnician

risposta

13

Out-File per impostazione predefinita codifica unicode che è il motivo per cui si sta osservando il comportamento che si è. Utilizzare -Encoding Ascii per modificare questo comportamento. Nel tuo caso

Out-File -Encoding Ascii -append textfile.txt. 

Add-Content utilizza Ascii e aggiunge anche di default.

Per quanto riguarda la mancanza di nuova riga: non è stata inviata una nuova riga in modo che non ne scriva uno su file.

Problemi correlati