您的位置:程序门 -> .net技术 ->



c#执行bat批处理的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


c#执行bat批处理的问题
发表于:2008-01-17 16:00:34 楼主
我这里倒是有一个方法:

c# code
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命令来实现,希望能实时显示结果

有什么解决方法么?多谢帮顶~
发表于:2008-01-17 16:16:541楼 得分:0
proc.startinfo.createnowindow   =   true;
发表于:2008-01-17 17:00:462楼 得分:0

再问问,我如果不加这个: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?
发表于:2008-01-17 17:08:103楼 得分:0
                                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();    
发表于:2008-01-17 17:34:064楼 得分:0
                       
                        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();


快速检索

最新资讯
热门点击