[英]c# opens the batch file but doesn't execute the VBScript in the .bat
我正在用C#开发应用程序。 主要思想是:
当我双击运行该批处理文件时,它可以正常工作。 但是,我尝试从C#应用程序运行它,但是它不起作用。
我已经尝试了很多方法。
以下是有关我尝试过的一些示例:
是否可以使用批处理文件建立telnet会话,发送命令并将输出写入文件?
批处理工作正常,但在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.