5

I want to run a command that prompt for an argument, can I do a BATch file that run this command and then wait for a sec and "write" or "type" automatically (like a live person) the argument? Thanks.

3
  • Not with built-in commands. You would need a third-party program to send the keys to the console.
    – Synetech
    Commented Jan 5, 2012 at 18:48
  • I highly recommend Autoit! for this sort of task. Actually what I highly recommend is to find a non-sendkeys way to do what you need to do but to use Autoit! if you have no other option.
    – EBGreen
    Commented Jan 5, 2012 at 18:51
  • 2
    Do you truly mean MS-DOS, as opposed to (say) Win32? Or are you making the common mistake of conflating textual user interface and operating system? If the latter, what operating system do you really mean? What operating system does your (unnamed, prompting for input) command natively run on?
    – JdeBP
    Commented Jan 5, 2012 at 20:17

2 Answers 2

9

If the command reads from stdin:

echo some text| command

(echo some text& echo line two) | command

If the command reads from the console specifically -- you cannot.

2

The CHOICE command gives you the ability to set a default option after a specified time out:

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."

So, in this case, you could just type something like CHOICE /T 10 /C ync /D y /M "Do you wish to proceed [yes]?", and after 10 seconds, it would simply choose Yes for you.

6
  • Thanks. There is any way to type a word? Commented Jan 5, 2012 at 19:43
  • Unfortunately no, choice only gives you the options there, with the default to be a single letter/number of your choice.
    – zackrspv
    Commented Jan 5, 2012 at 19:48
  • there are other scripting environments out there, like .NET, autoIT, autoHotkey, that may be of benefit to you; unless you can provide more detail, it's difficult to fully answer this question.
    – zackrspv
    Commented Jan 5, 2012 at 19:49
  • 2
    You've got the wrong end of the stick. The questioner doesn't want to prompt for input xyrself. Xe wants to programmatically respond to a prompt for input in an existing program.
    – JdeBP
    Commented Jan 5, 2012 at 20:12
  • 1
    I mis-read it at first, too, and was about the construct a similar answer, or point to where that question must have been asked and answered before, when I said to myself "Hold on a minute!…".
    – JdeBP
    Commented Jan 6, 2012 at 14:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .