繁体   English   中英

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

[英]c# opens the batch file but doesn't execute the VBScript in the .bat

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

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

当我双击运行该批处理文件时,它可以正常工作。 但是,我尝试从C#应用程序运行它,但是它不起作用。

我已经尝试了很多方法。

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

是否可以使用批处理文件建立telnet会话,发送命令并将输出写入文件?

C#Winforms和命令行批处理文件

批处理工作正常,但在C#程序中“ Windows无法找到devcon.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();

我得到了错误:

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不起作用。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM