2015-02-13 2 views
-1

У меня есть exe, который работает через консоль Windows и запрашивает ответы на три вопроса. Я создал командный файл, чтобы содержать критерии, и хотел бы автоматизировать все три ответа на вопросы, поэтому выбор файла bat запускает данные в пакетном файле.Ответ на несколько запросов командной строки

мне нужно пройти следующие критерии 1) имя машины (Enter) 2) пароль (Enter) 3) резервное копирование (Enter)

Я попытался "имя_компьютер | ех" и он работает штраф, а затем возвращает запрос на 2) ответ. Я хотел бы ответить на все три приглашения, а затем запустить exe.

+0

Ouch. Это кажется суровым голосом для нового пользователя. Я согласен, что вопрос может быть улучшен, но у меня не возникло проблем с его пониманием, и вопрос имеет более высокое качество, чем многие другие плакаты впервые. – dbenham

+0

Я подозреваю, что вы на самом деле запускаете свою программу в консоли Windows, которая не является *** DOS. Он выглядит похожим, но консоль CMD.EXE не является DOS. – dbenham

+0

Да, это правильно. Я отредактирую вопрос. И благодарю вас за то, что вы признали мою неуловимость. – Heat

ответ

0

Предполагая, что все входы выполняются через 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.

+0

Благодарим за отзыв. Exe запускается, и имя машины проходит, но оно продолжает приостанавливать запрос на ввод пароля (вопрос 2). – Heat

+0

@Heat - пароль не должен считываться из stdin. См. Изменение в моем ответе. – dbenham

+0

dbenham-Это похоже на то, что мне нужно. Еще раз спасибо за ваше время. – Heat

Смежные вопросы