2013-04-05 3 views
0

Probablement question de base, mais soit je ne trouve pas la réponse, soit je ne sais pas quels mots utiliser pour les rechercher.MS DOS Invite de commande - Fournir plusieurs noms de fichier d'entrée dans une commande

J'ai un programme de ligne de commande qui accepte trois noms de fichiers après que le fichier .exe a été appelé. J'ai aussi un programme qui est conçu pour exécuter ce programme et tester ses sorties automatiquement. Donc, la situation est que je cours un programme et que j'ai besoin de lui donner des instructions sur la façon de gérer l'autre. Grâce aux contraintes du programme, je dois fournir une commande d'une ligne qui exécutera le modèle. Ma question est: Comment dans l'invite de commande MS DOS puis-je à la fois 1) exécuter le programme et 2) fournir les trois noms de fichiers connus tout en une commande.

Merci!

Contexte supplémentaire: Ces deux programmes ne sont pas écrits par moi, mais plutôt deux exécutables de ligne de commande. Le "premier" programme est un modèle simple qui parcourt l'invite de commande. Le second est un programme d'étalonnage qui doit exécuter le modèle (peut-être des centaines de fois) pour calibrer certains paramètres d'entrée. J'ai donc besoin de dire au programme d'étalonnage comment exécuter le modèle. Cependant, je dois le faire en une ligne, ou un fichier batch.

+0

Votre deuxième programme - celui qui devrait exécuter le premier programme - dans quoi est-il écrit? – zmbq

+0

Il semble que vous ayez besoin d'utiliser des arguments de ligne de commande. Ce n'est pas clair cependant, comment donneriez-vous normalement des instructions au programme (pas à travers la ligne de commande)? –

+0

zmbq: Les deux programmes me sont fournis comme exécutables, le second dont je ne suis pas sûr, mais je sais que le premier est écrit en FORTRAN lc: Les deux programmes sont des programmes en ligne de commande. Si je n'exécutais que le premier programme (non automatisé par le second), les informations (dans ce cas, les noms de fichiers) sont fournies directement par l'utilisateur à partir de l'invite de commande. c'est-à-dire lorsque I (ou le programme d'automatisation) appelle le premier programme à partir de .exe, il s'exécute, puis affiche une commande "entrer le nom du fichier de contrôle" dans la ligne de commande. L'utilisateur entre alors le nom de fichier spécifié. Ceci est répété trois fois. –

Répondre

0

Je crois que vous êtes après ce que l'on appelle « la tuyauterie. » La sortie d'un programme est alimentée à l'entrée d'un autre programme. Ceci est exprimé dans une ligne de commande.

Par exemple, dir produit une séquence de lignes et sort lit des lignes, les trie et les écrit. Ainsi,

dir | sort

Vous pouvez diriger autant de programmes en même temps que vous le souhaitez et passer tous les arguments dont ils ont besoin.

dir | find "2013" | sort

EDIT: mise à jour en fonction de vos commentaires.

Si le deuxième programme lit juste la sortie du premier, vous pouvez le faire comme ceci.

first <filelist.txt | second

où filelist.txt est un fichier texte avec les trois réponses requises par le programme first. Le < signifie que first ne lira pas ce qui est tapé mais lu dans le fichier.

+0

Excellent! J'essayais dans le passé pour lister les trois fichiers comme tels: premier <1.txt <2.txt <3.txt et cela ne fonctionnerait pas. Cependant, cette idée de liste de fichiers fonctionne parfaitement. Merci! –

0

Je pense que cela fonctionnerait

C:\>program.exe "file1" "file2" "file3" 
+0

pour une raison quelconque, il ne passera toujours pas les noms de fichiers. Entrer une telle ligne, le programme s'arrête toujours d'attendre l'entrée à la première invite –

+0

pouvez-vous fournir un code source – tsanchev

+0

Malheureusement, je ne peux pas fournir de source puisque ces deux programmes me sont fournis en tant qu'exécutables, je vais essayer de clarifier mon message avec des captures d'écran et plus de description ci-dessus. –

Questions connexes