Reindirizza l'output dalla riga di comando di Windows a un file di testo

Uno dei modi più utili per registrare e risolvere i problemi relativi al comportamento dei comandi o dei processi batch eseguiti su Windows consiste nel reindirizzare l'output a un file.

Tuttavia, esistono diversi modi per reindirizzare le scritture della riga di comando su un file. L'opzione scelta dipende da come si desidera visualizzare l'output del comando.

Come funziona l'output del prompt dei comandi di Windows(How Windows Command Prompt Output Works)

Quando si digita un comando nella console di Windows ( prompt dei comandi(command prompt) ), l'output di tale comando passa a due flussi separati.

  • STDOUT : Standard Out è dove vanno tutte le risposte standard dai comandi. Ad esempio, la risposta standard per il comando DIR è un elenco di file all'interno di una directory.
  • STDERR : Standard Error è dove vanno a finire i messaggi di errore in caso di problemi con il comando. Ad esempio, se non ci sono file nella directory, il comando DIR emetterà " File non trovato" nel flusso di errore standard .(Standard Error)

Puoi reindirizzare l'output a un file in Windows per entrambi questi flussi di output.

Reindirizza output standard Scrivi su nuovo file(Redirect Standard Output Write to New File)

Esistono due modi per reindirizzare l'output standard di un comando a un file. Il primo è inviare l'output del comando in scrittura su un nuovo file ogni volta che esegui il comando.

Per fare ciò, apri il prompt dei comandi e digita:

dir test.exe > myoutput.txt

Il carattere > dice alla console di inviare STDOUT al file con il nome che hai fornito.

Quando esegui questo comando(run this command) , noterai che non c'è alcuna risposta nella finestra di comando tranne l'errore che il file non esiste.

Questo perché l'output standard per il comando è stato reindirizzato a un file chiamato myoutput.txt. Il file ora esiste nella stessa directory in cui è stato eseguito il comando. L'output dell'errore standard viene ancora visualizzato come normalmente.

Nota(Note) : fare attenzione a modificare la directory attiva(change the active directory) per il prompt dei comandi prima di eseguire il comando. In questo modo saprai dove sono archiviati i file di output.

È possibile visualizzare l'output standard che è andato al file digitando "myoutput.txt" nella finestra di comando. Questo aprirà il file di testo nel visualizzatore di file di testo predefinito. Per la maggior parte delle persone, di solito si tratta di Notepad.exe .

La prossima volta che esegui lo stesso comando, il file di output precedente verrà eliminato. Verrà ricreato un nuovo file di output con l'output del comando più recente.

Reindirizza le scritture di output standard sullo (Standard Output)stesso file(Same File)

Cosa succede se non si desidera sovrascrivere lo stesso file? Un'altra opzione è usare >> invece di > per reindirizzare a un file di output. Nel caso di questo esempio, digitare:

dir test.exe >> myoutput.txt

Vedrai lo stesso output (solo l'errore).

Ma in questo caso, invece di sovrascrivere il file di output, questo comando aggiunge il nuovo output al file di output esistente.

Ogni volta che esegui un comando e aggiungi l'output a un file, scriverà il nuovo output standard alla fine del file esistente.

Reindirizza l'errore standard a un file(Redirect Standard Error To a File)

Allo stesso modo in cui puoi reindirizzare le scritture di output standard su un file, puoi anche inviare il flusso di errore standard su un file.

Per fare ciò, dovrai aggiungere 2> alla fine del comando, seguito dal file di errore di output che desideri creare.

In questo esempio, digiterai il comando: 

dir test.exe > myoutput.txt 2> output.err

Questo invia il flusso di output standard a myoutput.txt e il flusso di errore standard a output.err. Il risultato è che nessun flusso di output viene visualizzato nella finestra della console.

Tuttavia, puoi vedere i messaggi di errore digitando output.err . Questo aprirà il file nel visualizzatore di file di testo predefinito.

Come puoi vedere, tutti i messaggi di errore del comando vengono inviati al file di errore. Proprio(Just) come con l'output standard, puoi usare >> invece di aggiungere l'errore agli errori dei comandi eseguiti in precedenza.

Reindirizza tutte le scritture di output su uno stesso file(Redirect All Output Writes to a Same File)

Tutti gli approcci precedenti risultano in più file. Un file è per il flusso di output standard e l'altro è per il flusso di errore standard.

Se vuoi includere entrambi questi output nello stesso file, puoi farlo anche tu. Per fare ciò, devi solo reindirizzare tutto l'output allo stesso file usando il comando seguente.

dir test.exe 1> myoutput.txt 2>&1

Ecco come funziona questo comando:

  • L'output standard viene indirizzato al file di output identificato dal numero di output 1.
  • L'output dell'errore standard identificato dal numero 2 viene reindirizzato al file di output identificato dal numero 1.

Questo aggiungerà l'output di errore alla fine dell'output standard.

Questo è un modo utile per vedere tutto l'output di qualsiasi comando in un file. 

Silenziamento dei flussi di output standard o di errore(Silencing Standard or Error Output Streams)

È inoltre possibile disattivare l' output(Standard Output) standard o l' errore standard(Standard Error) reindirizzando l'output a un NUL anziché a un file.

Utilizzando l'esempio sopra, se si desidera solo l' output standard(Standard Output) e nessun errore standard(Standard Error) , è possibile utilizzare il comando seguente:

dir test.exe 1> myoutput.txt 2>nul

Ciò risulterà nello stesso file di output del primo esempio sopra in cui hai reindirizzato solo Standard Output , ma con questo comando l'errore non riecheggia all'interno della console. Non creerà nemmeno un file di registro degli errori.

Questo è utile se non ti interessano gli errori e non vuoi che diventino un fastidio.

Puoi eseguire uno qualsiasi degli stessi comandi di output sopra dall'interno di un file BAT(inside a BAT file) e l'output da quella riga andrà al file di output specificato. Questo è un modo utile per vedere se i comandi all'interno di un file BAT presentavano errori durante il tentativo di esecuzione.



About the author

ingegnere audiofilo e specialista di prodotti audio con oltre 10 anni di esperienza. Sono specializzato nella creazione di altoparlanti e cuffie per musica di qualità dall'inizio alla fine. Sono un esperto nella risoluzione dei problemi audio e nella progettazione di nuovi altoparlanti e sistemi di cuffie. La mia esperienza va oltre la semplice realizzazione di buoni prodotti; Ho anche una passione per aiutare gli altri a essere il meglio di sé possibile, sia attraverso l'istruzione che il servizio alla comunità.



Related posts