У меня есть старый исполняемый файл, который запускается в командной строке. Он предлагает пользователю в интерактивном режиме для конкретных частей информации. То, что я хотел бы сделать, - это обернуть все взаимодействия этой команды в пакетный скрипт, чтобы он просто запускался и отвечал на запросы без вмешательства пользователя.

Это отличается от простого выполнения команды с аргументами. Исполняемый файл запрашивает пользователя. Перефразируя, как это работает ...

C:\MyDir>legacy.exe
  Welcome to old program.

  Please enter your name:
  > John Smith

  How many widgets are you buying:
  > 47

 Great, generating the PO file now...
 Goodbye.

В идеале я бы хотел дождаться подсказок и ответить на каждое из них соответственно. Я могу сделать это в .NET с объектом Process, но я хотел бы попробовать это с помощью пакетного сценария Windows. Если я не могу разобрать приглашения и просто должен слепо сбрасывать аргументы, я это тоже приму.

Я вижу другой вопрос, где ответом было использование VBScript. Есть ли способ сделать это простым сценарием?

2 ответа2

1

Это зависит от того, как ваш legacy.exe взаимодействует со (перенаправленным) стандартным входом .

Вы можете попробовать это

(Echo John Smith&Echo 47)|legacy.exe

Если это не сработает, вам может понадобиться сторонний sendkey.exe и отсоединить legacy.exe из пакета с запуском, как это предлагается Genaro Morales, и использовать приложение sendkey, чтобы сделать ввод аналогично решению vbs. Так что это не чистая партия. Смотрите эти результаты поиска.

-1

Вы когда-нибудь пытались получить командный файл с:

запустить "полный путь" legacy.exe?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .