У меня есть утилита (myprog.exe), которая требует логин пароль для работы. Он имеет INI-файл для идентификатора и пароля, но по какой-то причине он не будет использовать значения, которые я ввел в INI-файл (я думаю, что он должен автоматически обновлять INI-файл, но этого не происходит), поэтому Я пытаюсь найти обходной путь.

Если из файла .bat я запускаю

echo <USER ID> | myappp.exe

это правильно передает идентификационный номер в программу, и он переходит на вход PW. Если я наберу PW и нажму [Enter], программа работает правильно (изображение является результатом выполнения вышеуказанной команды из командного файла). Все, что я хочу сделать, это передать эту клавиатуру для PW на программу. Я попробовал несколько различных синтаксических форм для второй команды эха, потому что они не работали или как-то зависали.

Я не написал утилиту, а автор не может предложить дальнейшую помощь.

вывод продукции

Редактирование командного файла и добавление второй команды эха

echo <password> | myappp.exe

в любой синтаксической форме или пытаясь вызвать 2-й пакетный файл после первой команды echo

echo <USER ID> | myappp.exe
call 2ndinput.bat

все попытки дали один и тот же результат:

2-й результат ввода строки

1 ответ1

0

Ввод трубопровода для команды работает только тогда, когда команда запрашивает ввод с клавиатуры. (И даже тогда не всегда, например, это не работает для команды 'runas')

Вы можете использовать vbscript(в комплекте с win7) и его функцию sendkeys. (Хотя имейте в виду, что он немного ограничен в том, что он не поддерживает юникод https://stackoverflow.com/questions/3198574/does-or-can-vbscripts-sendkeys-support-unicode ) Но это ограничение не повлияет вы. Обратите внимание, что sendkeys в C # поддерживает Unicode.

blah.vbs

Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set objArgs = Wscript.Arguments
dim a, b
arg1 = objArgs(0)
arg2 = objArgs(1)
WshShell.SendKeys "blahprogram " + arg1 + "{Enter}" + arg2 + "{Enter}"

Так что если вы запускаете blah.vbs abc def

он запустит C:\>blahprogram abc<ENTER>def<ENTER>

Вы могли бы сделать строку sendkeys

WshShell.SendKeys "blahprogram" + "{Enter}" + "123" + "{Enter}"

Тогда это будет делать

C:\>blahprogram<ENTER>123<ENTER>

Если вы хотите запустить

C:\>echo.| blahprogram<ENTER>123<ENTER>

Вы можете использовать линию

WshShell.SendKeys "echo.|blahprogram" + "{Enter}" + "123" + "{Enter}"

Так что вся ваша программа будет

Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set objArgs = Wscript.Arguments
WshShell.SendKeys "echo.|blahprogram" + "{Enter}" + "123" + "{Enter}"

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