Дескриптор командной строки для запуска команд в определенной командной строке

415
tryingToLearn

У меня есть утилита abc.exe, которая запускает специальную командную строку . К особенному я имею в виду, некоторые переменные окружения установлены на этой строке. Затем я должен запустить набор команд в этом специальном окне команд. Я объединил все такие команды в командный файл и запустил этот bat-файл. Тем не менее, это все еще 2 шага.

  1. Запустите специальную командную строку через abc.exe (можно запустить через командную строку)
  2. Запустите команды .bat

Я хочу объединить эти 2 шага в одном пакетном файле так, чтобы команды commands.bat или, скорее, команды, содержащиеся в этом файле, выполнялись только в специальной командной строке. Возможно ли это как-то ограничивая / направляя команды в определенной командной строке?

Теперь у меня нет кода для abc.exe, поэтому единственное, что я могу с ним сделать, - запустить через него специальную командную строку.

0
Если этот инструмент `abc.exe` не имеет переключателя командной строки (или какого-либо ключа в окружении или INI-файла), который позволяет передать ему пакетный файл для выполнения и не принимать входные данные из std. ввод, единственный способ, который я вижу, это создать пакет или скрипт, который запускает инструмент, ждет специальной консоли (или обнаруживает ее по перехвату) и затем отправляет ваш пакетный файл в это окно консоли char-by-char с помощью `sendkeys `. Akina 5 лет назад 0
@ Акина, вы правы, я ищу способ "захватить" окно консоли. У вас есть идея, как это сделать? tryingToLearn 5 лет назад 0

1 ответ на вопрос

3
Akina

Черновой шаблон сценария VBS (сохранить в виде файла .VBS).

Set WshShell = WScript.CreateObject("WScript.Shell") ' Create Shell object WshShell.Run "abc.exe", 9 ' Execute application WScript.Sleep 500 ' Wait 0.5s for its start WshShell.AppActivate "SpecialConsole" ' Set focus to console window  WshShell.SendKeys "MyScript.bat" ' Type batch file name WshShell.SendKeys "" ' Press Enter key 

Отредактируйте, как вам нужно.