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

openzpc 2013-09-12 10:50:56
使用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窗口隐藏或自动关闭

谢谢了
...全文
90 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2013-09-12
  • 打赏
  • 举报
回复
(1) 放入批处理文件,调用批处理 (2) 加一个quit命令看看

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧