2013-08-27 25 views
36

Ho confrontato due file utilizzando il seguente codice:Scrivere output in un file di testo in PowerShell

Compare-Object $(Get-Content c:\user\documents\List1.txt) $(Get-Content c:\user\documents\List2.txt) 

Come posso scrivere l'uscita di questo in un nuovo file di testo? Ho provato a usare un comando echo, ma non capisco davvero la sintassi.

risposta

61

Utilizzare il cmdlet Out-File

Compare-Object ... | Out-File C:\filename.txt 

Facoltativamente, aggiungere -Encoding utf8-Out-File come la codifica di default non è proprio l'ideale per molti usi.

+4

E i messaggi STDOUT (informazioni) e STDERR (errore)? Entrambe andranno nel file esterno? – Jess

14

Il modo più semplice è quello di reindirizzare solo l'output, in questo modo:

Compare-Object $(Get-Content c:\user\documents\List1.txt) $(Get-Content c:\user\documents\List2.txt) > c:\user\documents\diff_output.txt 

> farà sì che il file di output per essere sovrascritto se esiste già.
>> aggiungerà il nuovo testo alla fine del file di output, se già esiste.

+5

Questo è il metodo cmd/dos. Per PowerShell credo che Out-File è un'abitudine molto migliore per entrare in –

+0

@AthomSfere, sono d'accordo. Sto ancora imparando PowerShell e le vecchie abitudini sono dure a morire. :) – Matt

+1

Questo è anche il modo Unix, se si utilizza Windows con la forza, questo è il modo. –

Problemi correlati