2011-06-11 4 views
1

Je dois créer un court script shell Windows. S'il te plaît, ne t'enfuis pas. Cela ne pourrait pas être plus simple, mais je ne peux pas trouver le moyen de faire de cette ligne de commande franchement primitive pour travailler avec moi.Windows: attendre la fin du processus

Je veux simplement exécuter dxdiag, et faire quelque chose avec les données recueillies.

Chose est, je ne peux pas obtenir le script attendre pour dxdiag pour terminer, car il engendre le processus et continue à aller. J'ai besoin que le fichier existe et ai l'information avant de passer à la ligne suivante.

L'utilisation de start /wait n'a aucun effet, je devine parce qu'il n'y a aucune interface graphique impliquée. Je commence à penser que ce n'est pas possible. S'il vous plaît aider!

+0

Il serait utile si vous avez spécifié la version de Windows ... – bbaja42

+0

Je me bats dans Windows 7, mais cela devrait fonctionner pour XP + – slezica

Répondre

1

J'ai essayé quelque chose comme ça

start /wait dxdiag /x:SomeXmlFile 

Et il travaille pour moi dans Windows Vista.

+0

Hmmm ne fonctionne pas dans Windows 7 pour moi. Je pense que je vais juste boucler jusqu'à ce que le fichier existe. – slezica

+0

@Santiago Soyez prudent si vous bouclez jusqu'à ce que le fichier existe, car vous pourriez essayer d'accéder au fichier avant que dxdiag ait fini de le créer (cela dépend vraiment de la façon dont dxdiag fonctionne avec les fichiers). Si – bbaja42

+0

j'attends quelques secondes entre les passages de boucle. Les chances que j'attrape le fichier au milieu de l'écriture sont minces, et honnêtement, je suis content de ce haha. Merci de votre aide! – slezica

1

Faites quelque chose de similaire à ce code:

tasklist /FI "IMAGENAME eq dxdiag.exe" 2>NUL | find /I /N "dxdiag.exe">NUL 
if "%ERRORLEVEL%"=="0" goto next_area_here 
  • si errorlevel est retourné comme 0, dxdiag dans ce cas est FERME
  • si errorlevel retourné comme 1, dxdiag dans ce cas est OUVERT
Questions connexes