Question Comment entrer automatiquement dans le fichier BATch sous DOS?


Je veux exécuter une commande qui demande un argument, puis-je faire un fichier BATch qui exécute cette commande, puis attendre une seconde et "écrire" ou "taper" automatiquement (comme une personne en direct) l'argument? Merci.


4
2018-01-05 18:45


origine


Pas avec les commandes intégrées. Vous auriez besoin d'un programme tiers pour envoyer les clés à la console. - Synetech
Je recommande vivement Autoit! pour ce genre de tâche. En fait, ce que je recommande fortement, c'est de trouver un moyen non-sendkeys pour faire ce que vous devez faire, mais d'utiliser Autoit! si vous n'avez pas d'autre option. - EBGreen
Voulez-vous vraiment dire MS-DOS, par opposition à (disons) Win32? Ou faites-vous l'erreur commune de interface utilisateur textuelle et système d'exploitation? Si ce dernier, quel système d'exploitation avez-vous vraiment signifier? Quel est le système d'exploitation sur lequel s'exécute en natif votre commande (sans nom, demandant une entrée)? - JdeBP


Réponses:


Si la commande lit à partir de stdin:

echo some text| command

(echo some text& echo line two) | command

Si la commande lit spécifiquement depuis la console - vous ne pouvez pas.


8
2018-01-05 19:48





La commande CHOICE vous permet de définir une option par défaut après un délai spécifié:

CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]

Description:
    This tool allows users to select one item from a list
    of choices and returns the index of the selected choice.

Parameter List:
   /C    choices       Specifies the list of choices to be created.
                       Default list is "YN".

   /N                  Hides the list of choices in the prompt.
                       The message before the prompt is displayed
                       and the choices are still enabled.

   /CS                 Enables case-sensitive choices to be selected.
                       By default, the utility is case-insensitive.

   /T    timeout       The number of seconds to pause before a default
                       choice is made. Acceptable values are from 0 to
                       9999. If 0 is specified, there will be no pause
                       and the default choice is selected.

   /D    choice        Specifies the default choice after nnnn seconds.
                       Character must be in the set of choices specified
                       by /C option and must also specify nnnn with /T.

   /M    text          Specifies the message to be displayed before
                       the prompt. If not specified, the utility
                       displays only a prompt.

   /?                  Displays this help message.

   NOTE:
   The ERRORLEVEL environment variable is set to the index of the
   key that was selected from the set of choices. The first choice
   listed returns a value of 1, the second a value of 2, and so on.
   If the user presses a key that is not a valid choice, the tool
   sounds a warning beep. If tool detects an error condition,
   it returns an ERRORLEVEL value of 255. If the user presses
   CTRL+BREAK or CTRL+C, the tool returns an ERRORLEVEL value
   of 0. When you use ERRORLEVEL parameters in a batch program, list
   them in decreasing order.

Examples:
   CHOICE /?
   CHOICE /C YNC /M "Press Y for Yes, N for No or C for Cancel."
   CHOICE /T 10 /C ync /CS /D y
   CHOICE /C ab /M "Select a for option 1 and b for option 2."
   CHOICE /C ab /N /M "Select a for option 1 and b for option 2."

Donc, dans ce cas, vous pourriez simplement taper quelque chose comme CHOICE /T 10 /C ync /D y /M "Do you wish to proceed [yes]?", et après 10 secondes, il choisirait simplement Oui pour vous.


2
2018-01-05 19:40



Merci. Il y a un moyen de taper un mot? - Leandro Tupone
Malheureusement, non, le choix ne vous donne que les options, avec la valeur par défaut correspondant à une lettre / un chiffre de votre choix. - zackrspv
Il existe d'autres environnements de script, tels que .NET, autoIT, autoHotkey, qui peuvent vous être utiles. à moins que vous ne puissiez fournir plus de détails, il est difficile de répondre pleinement à cette question. - zackrspv
Vous avez le mauvais bout du bâton. Le questionneur ne veut pas demander de saisie xyrself. Xe veut répondre par programme à une invite pour entrer dans un programme existant. - JdeBP
Je l’ai mal lu au départ, et je pensais à la construction d’une réponse similaire, ou cette question doit ont été demandé et répondu avant, quand je me suis dit "attends une minute! ...". - JdeBP