我正在用C#开发应用程序。主要思想是:
当我通过双击运行该批处理文件时,它运行正常。但是,我尝试从C#应用程序运行它,这是行不通的。
我已经尝试了许多方法。
以下是我尝试过的一些示例:
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不起作用。
答案 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
,因为一旦窗口设置不正确或某些进度被延迟,它可能会导致严重的问题。