C#执行bat批处理的问题

linsoo 2008-01-17 04:00:34
我这里倒是有一个方法:

Process proc = new Process();

proc.StartInfo.FileName = "cmd.exe";

proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;

proc.Start();

proc.StandardInput.WriteLine("dir");
proc.StandardInput.WriteLine("exit");

string line = null;

line = proc.StandardOutput.ReadLine();

while (line != null)
{
richTextBox1.AppendText(line);
richTextBox1.AppendText("\n");
line = proc.StandardOutput.ReadLine();
}


但这个方法会跳出一个cmd的窗口....我希望是不要跳出任何窗口,只是在我的程序里显示运行的结果
我的目的是用写一个备份和恢复Oralce数据库的工具,可以用在cmd下执行相关的oracle命令来实现,希望能实时显示结果

有什么解决方法么?多谢帮顶~
...全文
503 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
anonymouske 2009-09-18
  • 打赏
  • 举报
回复
加上一句proc.StartInfo.CreateNoWindow = true;
应该就行了。
貌似这个提问是n久之前的了,不知道对楼主还有没有用……
huangying_168 2008-10-15
  • 打赏
  • 举报
回复
试了里面所有的方法,怎么都不行啊,谁可以帮帮忙啊,我现在要调用 D:\txt\dns.bat这个命,怎么试都不行啊
airwaterland 2008-01-17
  • 打赏
  • 举报
回复

Process p = new Process();

p.StartInfo.FileName = @"C:\yourbatfile.bat";

p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;

p.Start();
p.WaitForExit();
jiatong1981 2008-01-17
  • 打赏
  • 举报
回复
cmdText = @"copy C:\Documents and Settings\Administrator\桌面\test.txt c:\";
System.Diagnostics.Process p = new System.Diagnostics.Process();

p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine(cmdText);
p.Close();
linsoo 2008-01-17
  • 打赏
  • 举报
回复

再问问,我如果不加这个:proc.StandardInput.WriteLine("exit");


line = proc.StandardOutput.ReadLine();到最后就会死掉,又不是死循环,很奇怪

而且,我用这个执行sqlplus /nolog不行除非改成这样

Process proc = new Process();

proc.StartInfo.FileName = "sqlplus";
proc.StartInfo.Arguments = "/nolog";

proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;

proc.Start();

proc.StandardInput.WriteLine("conn /as sysdba");
proc.StandardInput.WriteLine("exit");

string line = null;

line = proc.StandardOutput.ReadLine();

while (line != null)
{
richTextBox1.AppendText(line);
richTextBox1.AppendText("\n");
line = proc.StandardOutput.ReadLine();
}


但是执行到proc.StandardInput.WriteLine("conn /as sysdba");的时候又不行了.....why?
jiatong1981 2008-01-17
  • 打赏
  • 举报
回复
proc.StartInfo.CreateNoWindow = true;

110,534

社区成员

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

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

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