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.
-
Not with built-in commands. You would need a third-party program to send the keys to the console.– SynetechCommented 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.– EBGreenCommented Jan 5, 2012 at 18:51
-
2Do 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?– JdeBPCommented Jan 5, 2012 at 20:17
Add a comment
|
2 Answers
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.
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.
-
-
Unfortunately no, choice only gives you the options there, with the default to be a single letter/number of your choice.– zackrspvCommented 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.– zackrspvCommented Jan 5, 2012 at 19:49
-
2You'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.– JdeBPCommented Jan 5, 2012 at 20:12
-
1I 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!…".– JdeBPCommented Jan 6, 2012 at 14:34