Windows Batch Script: rediriger toute la sortie vers un fichier

j'exécute différents benchmarks Java et j'aimerais archiver les résultats. Je exécuter l' (dacapo) indice de référence comme ceci:

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

je passe le type de benchmark au-dessus d'un paramètre, c'est ce qu'est %arg1%.

vous pouvez voir que je redirige la sortie vers un fichier texte. Malheureusement, la première et dernière ligne de la sortie est encore imprimée dans la console et non dans le fichier text:

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

Surtout la dernière ligne serait important d'avoir dans le fichier texte :)

Est-il un truc pour forcer ce comportement?

25
demandé sur Robby Cornelissen 2013-03-11 23:24:53
la source

2 ответов

Vous devez rediriger STDOUT et STDERR.

command > logfile 2>&1

STDIN est le fichier descripteur de #0, STDOUT est le descripteur de fichier n ° 1 et STDERR est le descripteur de fichier n ° 2.

Tout comme" commande > Fichier " redirige STDOUT vers un fichier, vous pouvez également rediriger des descripteurs de fichier arbitraires les uns vers les autres. >& opérateur redirige entre les descripteurs de fichier. Donc, 2 >& 1 redirige tous les STDERR sortie STDOUT.

de plus, prenez soin d'ajouter 2>&1 à la fin de l'instruction car sur Windows, l'ordre de redirection est important comme command 2>&1 > logfile produira un fichier vide, comme Dawid l'a ajouté dans les commentaires.

47
répondu Zach Riggle 2018-05-14 23:39:47
la source

Ajouter 2>&1 pour votre commande:

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

cela redirigera STDERR vers STDOUT qui est alors redirigé dans votre fichier texte.

5
répondu Squeezy 2013-03-11 23:27:50
la source

Autres questions sur