2010-12-02 54 views
1

J'ai un script Windows cmd.exe qui exécute un processus enfant et doit collecter la sortie de l'enfant pour définir trois variables. Le processus enfant effectue un certain travail et imprime trois valeurs.comment passer des valeurs du processus enfant au shell parent cmd.exe?

Comment coder le parent pour collecter les valeurs imprimées par l'enfant?

Je peux apporter des modifications au processus enfant nécessaire pour ce faire, mais le script parent doit être écrit en tant que fichier de commandes cmd.exe.

+0

Comment démarrer votre processus enfant? Avec ** cmd.exe/c ** ou ** démarrer cmd.exe/c ** ou appeler child.bat? – jeb

+0

Actuellement, je le lance avec "perl script-name" - mais je pourrais utiliser l'un ou l'autre des moyens si cela peut vous aider. – Martin

Répondre

2

Est-il acceptable que les processus enfants définissent des variables d'environnement? processus parent devrait être en mesure de ramasser cela.

child.bat

set VAR1=123 
set VAR2=321 

parent.bat

echo %VAR1% 
echo %VAR2% 
call child.bat 
echo %VAR1% 
echo %VAR2% 

Vous pouvez définir la variable d'environnement de programme enfant/script quelle que soit la langue que vous utilisez - il existe des moyens pour définir des variables d'environnement d'eux.

+0

Fonctionne pour moi! Je n'ai pas pu trouver comment définir les variables d'environnement depuis le processus fils (c'est perl, et la mise à jour du hachage% ENV ne mettait pas à jour les variables dans le processus parent). Au lieu de cela, j'ai demandé à l'enfant d'imprimer les commandes "set var = xxx" dans le fichier, puis de lancer ce fichier en tant que fichier batch du parent. – Martin

0

La réponse de mr.b est correcte parce que les deux scripts batch s'exécutent dans le même processus cmd.exe. En fait, le processus enfant n'a pas pu écrire les variables d'environnement du processus parent. Essayez d'autres méthodes IPC.