c#打开批处理文件,但不执行.bat中的VBScript

时间:2019-07-11 16:11:02

标签: c# batch-file cmd vbscript telnet

我正在用C#开发应用程序。主要思想是:

  1. 按下按钮
  2. 打开.bat文件
  3. .bat文件打开Telnet [IP] [端口]
  4. .bat文件执行VBScript
  5. VBScript将一些命令写入telnet窗口

当我通过双击运行该批处理文件时,它运行正常。但是,我尝试从C#应用程序运行它,这是行不通的。

我已经尝试了许多方法。

以下是我尝试过的一些示例:

Is it possible to use a batch file to establish a telnet session, send a command and have the output written to a file?

C# Winforms and command line batch files

batch works fine but "windows cannot find devcon.exe" in c# program

当我尝试这样做时:

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 :(得分:0)

您可以做的是找到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,因为一旦窗口设置不正确或某些进度被延迟,它可能会导致严重的问题。