C # открывает пакетный файл, но не выполняет VBScript в .bat - PullRequest
0 голосов
/ 11 июля 2019

Я занимаюсь разработкой приложения на C #.Основная идея:

  1. Нажмите кнопку
  2. Открыть .bat файл
  3. .BAT файл открывает Telnet [IP] [Порт]
  4. .bat файл выполняет VBScript
  5. VBScript записывает некоторые команды в окно telnet

Когда я запускаю этот пакетный файл, дважды щелкнув по нему, он работает нормально.Однако, когда я пытаюсь запустить его из приложения на C #, это не работает.

Я уже пробовал много методов.

Вот несколько примеров того, что я пробовал:

Можно ли использовать пакетный файл для установления сеанса telnet, отправить команду и записать вывод в файл?

C # Winforms и командные файлы командной строки

пакетная работа работает нормально, но "windows не может найти devcon.exe" в программе на c #

Когда я попробовал это:

string cmd = @"path";
var m_command = new System.Diagnostics.Process();
m_command.StartInfo.FileName = @"file.bat";
m_command.StartInfo.Arguments = cmd;
m_command.Start();

Я получил ошибку:

windows не может найти .exe, убедитесь, что вы правильно ввели имя, а затем повторите попытку

И когда я попробовал это:

string cmd = @"path";
var m_command = new System.Diagnostics.Process();
m_command.StartInfo.FileName = @"file.bat";
m_command.StartInfo.Arguments = cmd;
m_command.Start();

Это работает, но просто открывает telnet, VBScript не работает.

Это код вфайл .bat:

:: Open a Telnet window
start C:\Windows\System32\telnet.exe 192.168.0.198 49211
:: Run the script 
cscript SendKeys.vbs 

Это код в файле .svs:

set OBJECT=WScript.CreateObject("WScript.Shell")
WScript.sleep 500
OBJECT.SendKeys "T{ENTER}" 
WScript.sleep 1000
OBJECT.SendKeys "T{ENTER}"
OBJECT.SendKeys " "

Я ожидаю, что .VBS запишет команду в окно telnet, однако, когда янажмите кнопку в форме c #, он просто открывает telnet, VBScript не работает.

1 Ответ

0 голосов
/ 16 июля 2019

Что вы можете сделать, это найти файл cscript.exe и выполнить его напрямую, например, так:

for /f "tokens=*" %%C in ('where csscript.exe') do (%%C Sendkeys.vbs&goto Next)
:Next
rem This is only necessary because we want to run the script once

Эта миграция работает, но, как сказали комментаторы, использование sendkeys действительноне рекомендуется, так как это может вызвать серьезные проблемы, если окна установлены неправильно или некоторые этапы будут задержаны.

...