2010-10-22 17 views
1

Bon, voici un toughie-- Je capture la sortie de cmd.exe très bien, en lisant à partir du tuyau, yadda yadda yadda, mais ensuite une ligne dans le fichier de commandes cmd.exe a le audace de faire:Continuer la capture de sortie après la redirection

dir err.txt> zz

.. qui est, il est redirigeant la sortie de la commande dir, qui est une commande interne à l'intérieur cmd.exe.

Le problème est, ceci casse ma capture de sortie! Je ne peux rien obtenir de cmd.exe après ce point.

Apparemment, pour rediriger la sortie standard, elle la ferme ou la casse d'une manière ou d'une autre et crée une nouvelle sortie standard pour rediriger la sortie. Et il ne restaure jamais l'ancienne poignée stdout.

Des idées sur la façon de suivre cette sortie?

Répondre

0

vous devez appeler dir err.txt dans un processus distinct. essayez call dir err.txt >zz

+0

' call' n'utilisera pas un processus séparé. Vous auriez besoin de 'cmd/c 'dir err.txt> zz" 'dans ce cas. – Joey

0

Si vous êtes autorisé à modifier le fichier de commandes, vous pouvez remplacer la redirection interne par une commande TEE.

Il existe plusieurs ports à Windows (il suffit de google "windows command tee").

De Wikipedia: En informatique, tee est une commande à divers interprètes de ligne de commande (coques) tels que des coquilles Unix, 4DOS/4SA et Windows PowerShell, qui affiche ou tuyaux la sortie d'une commande et copies `dans un fichier ou une variable