2012-12-13 4 views
0

Je crée un fichier batch pour supprimer les ports COM virtuels créés avant d'utiliser com0com. au moment de la création, le nom du port où rebaptisés par exemple:Suppression des ports COM virtuels dans C#

change CNCA2 portname=COM20 

Alors, quand je veux supprimer je devrais utiliser le nom original comme:

remove 2 

qui correspond à la nomport originale CNCA2

Donc, ce que j'essaie de faire ici est que si l'utilisateur choisit de retirer le port COM20, comment obtenir le nom d'origine qui est CNCxx?

ci-dessous est l'échantillon de commande i utilisé: enter image description here

comme u peut voir, quand j'écris remove COM150 il n'y a pas de changement, donc j'ai besoin pour obtenir le nom correspondant qui est remove 2.

donc à partir de l'application C# comment puis-je obtenir le nom correspondant sans utiliser manuellement une commande list?

Merci.

Répondre

2

Vous pouvez générer un processus d'invite de commande exécutant la commande list et capturer la sortie en redirigeant stdout vers un fichier texte. Ensuite, lisez les résultats à partir du fichier. Dans l'exemple ci-dessus, il devrait être relativement simple d'analyser les résultats et de les utiliser pour créer un dictionnaire, ce qui vous permet de rechercher facilement le nom d'origine en fonction du nouveau nom.

+0

ouais merci pour la suggestion. J'ai réussi à enregistrer la sortie de la 'list' dans un fichier texte. Je vais essayer de le relire ou de faire un dictionnaire. Bien que je n'ai jamais un dictionnaire auparavant. – Liban

+0

Vous n'avez pas besoin de rediriger la sortie vers un fichier. Dans .NET, la classe Process peut vous aider à capturer la sortie standard dans un flux afin que vous puissiez la lire directement. –

+0

@AlvinWong, je ne savais pas que la classe de processus peut capturer la sortie standard, ce serait très utile, laissez-moi vérifier comment. – Liban

Questions connexes