请教一个关于执行dos命令的问题

openzpc openzpc 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
使用C#执行多行dos命令,我是这样写的

public void killRE()
{
string ip = txtIP.Text.Trim();
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine("@echo off");
p.StandardInput.WriteLine("set host=%1");
p.StandardInput.WriteLine("set hdvg=%2");
p.StandardInput.WriteLine("echo Starting RenderEngine on %hdvg% %host%. Please wait ...");
p.StandardInput.WriteLine("echo set sh=WScript.CreateObject(\"WScript.Shell\") >tmp.vbs");
p.StandardInput.WriteLine("echo WScript.Sleep 1000>>tmp.vbs");
p.StandardInput.WriteLine("echo sh.SendKeys \"open " + ip + "{ENTER}\">>tmp.vbs\n");
p.StandardInput.WriteLine("echo WScript.Sleep 1000>>tmp.vbs");
p.StandardInput.WriteLine("echo sh.SendKeys \"root{ENTER}\" >>tmp.vbs");
p.StandardInput.WriteLine("echo WScript.Sleep 1000>>tmp.vbs");
p.StandardInput.WriteLine("echo sh.SendKeys \"killall RE{ENTER}\" >>tmp.vbs");
p.StandardInput.WriteLine("echo WScript.Sleep 1000>>tmp.vbs");
p.StandardInput.WriteLine("start telnet");
p.StandardInput.WriteLine("cscript //nologo tmp.vbs");
p.StandardInput.WriteLine("del tmp.vbs");
p.Close();
}

这段dos命令的目的就是远程关闭另一台机器(Linux系统)
我有两个问题:
1.每行用了一个p.StandardInput.WriteLine方法来执行一条dos语句,有没有更好的方法,比如批量执行?
2.如果使用这个方法执行这些dos语句时,会弹出一个telnet程序的窗口,如下图,有什么方法能够把这个telnet窗口隐藏或自动关闭

谢谢了
...全文
评论 1
收藏 已收藏
分享
返回顶部
openzpc
C# 111,129 成员 642,538 内容