Expect делает схему использования совершенно другой и , он использует другой способ взаимодействия с упакованной программой, который во многом похож на то, как работает интерактивное использование (которое останавливает целый класс ошибок, связанных с буферизацией, которыеЯ подозреваю, что может быть, что вы бьете).Из-за этого, преобразование вещей - это , а не изменение.Вот простой шаблон использования в простом случае:
package require Expect
# Note: different words become different arguments here
spawn Certify.exe args
expect "some sort of prompt string"
send "your input\r"; # \r is *CARRIAGE RETURN*
expect "something else"
send "something else\r"
expect eof
close
Реальная сложность возникает, когда вы можете установить тайм-ауты, ждать несколько вещей одновременно, ждать шаблоны, а такжебуквальные строки и т. д. Но сделать то же самое из обычного Tcl (даже не обращая внимания на проблемы с буферизацией) - гораздо больше работы.Также почти всегда больше работы практически на любом другом языке.
Обратите внимание, что Expect не выполняет автоматизацию графического интерфейса.Просто программы командной строки.Автоматизация графического интерфейса - гораздо более сложная тема.
Невозможно дать общее описание того, что можно сделать, так как это сильно зависит от того, что на самом деле делает программа Certify.exe
, и от того, как вы работаете с ней.это в интерактивном режиме.