2013-03-11 15 views
24

Sto eseguendo vari benchmark Java e vorrei archiviare i risultati. Eseguo benchmark (dacapo) come questo:Script batch di Windows: reindirizza TUTTA l'output in un file

C:\VM\jre\bin\java -jar C:\benchmarks\dacapo-9.12-bach.jar %arg1% > %time::=% 

passo il tipo di parametro in più di un parametro, questo è quello% arg1% è.

Si può vedere che sto reindirizzando l'output in un file di testo. Purtroppo, la prima e l'ultima riga della uscita è ancora stampata nella console e non nel file di testo:

===== DaCapo 9.12 luindex starting ===== 
===== DaCapo 9.12 luindex PASSED in 2000 msec ===== 

Soprattutto l'ultima riga sarebbe importante avere nel file di testo :)

C'è un trucco per forzare questo comportamento?

risposta

45

È necessario reindirizzare STDOUT e STDERR.

command > logfile 2>&1

+2

Che cosa significa 2> & 1 significa? Dire che la sintassi non intuitiva sarebbe un complimento di altissimo livello. – vargonian

+8

STDIN è il descrittore di file # 0. STDOUT è il descrittore # 1 del file. STDERR è il descrittore di file n. 2. Proprio come "comando> file" reindirizza STDOUT in un file, puoi anche reindirizzare a vicenda i descrittori di file arbitrari. L'operatore "> &" reindirizza tra i descrittori di file. Quindi, "2> & 1" reindirizza tutti gli output STDERR a STDOUT. –

+0

Grazie mille, Zach, questo lo demistifica! – vargonian

4

Aggiungi 2> & 1 al comando:

C:\VM\jre\bin\java -jar C:\benchmarks\dacapo-9.12-bach.jar %arg1% 2>&1 > %time::=% 

Questo reindirizzerà STDERR a STDOUT che viene poi reindirizzato al tuo file di testo.

Problemi correlati