Предполагая, что все входы выполняются через stdin, то либо труба, либо перенаправление должны работать для всех трех входов.
Самый простой способ - создать временный файл ответов и использовать перенаправление.
@echo off
>response.tmp (
echo machinename
echo password
echo backup
)
<response.tmp prog.exe
del response.tmp
Казалось бы, это было бы легко использовать трубу и избавиться от временного файла
(echo machinename&echo password&echo backup)|prog.exe
Но есть одна проблема - анализатор вставляет пробел перед каждым &
и )
. Это, вероятно, нарушит все.
Обратите внимание, что каждая сторона трубы выполнена через cmd /c
, поэтому каждая сторона анализируется дважды. Это исходный синтаксический анализатор труб, который вставляет нежелательное пространство.
Простейший способ, которым я нашел, чтобы предотвратить дополнительное пространство, заключается в том, чтобы задержать появление &
так, чтобы анализатор изначально считал, что вся левая сторона является одной командой ECHO.
@echo off
setlocal
set "+=&"
echo machinename%%+%%echo password%%+%%echo backup|prog.exe
EDIT
Тот факт, что ваша программа зависает при запросе пароля означает, что пароль считываются непосредственно из консоли, а не через стандартный ввод. В этом случае вам понадобится что-то вроде freeware AutoIT utility.
Ouch. Это кажется суровым голосом для нового пользователя. Я согласен, что вопрос может быть улучшен, но у меня не возникло проблем с его пониманием, и вопрос имеет более высокое качество, чем многие другие плакаты впервые. – dbenham
Я подозреваю, что вы на самом деле запускаете свою программу в консоли Windows, которая не является *** DOS. Он выглядит похожим, но консоль CMD.EXE не является DOS. – dbenham
Да, это правильно. Я отредактирую вопрос. И благодарю вас за то, что вы признали мою неуловимость. – Heat