c#怎么调用cmd的命令呀?或者说怎么向cmd中写入命令?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#怎么调用cmd的命令呀?或者说怎么向cmd中写入命令?相关的知识,希望对你有一定的参考价值。

我想到了一个方法,就是把cmd命令写入批处理,然后c#用process.start();就可以了,但由于需要,这要两个文件,我现在必须一个文件就得搞定,所以这个方法大家就别谈了。

当然如果是像关机之类的名令也好办Process.start(shutdown -s -t 0)
可是我现在要的命令是
@ECHO OFF
ECHO Set WshShell = Wscript.CreateObject("Wscript.Shell") >%temp%\tmp.vbs
ECHO strAllUsersStartup= WshShell.SpecialFolders("AllUsersStartup") >>%temp%\tmp.vbs
CMD /c "ECHO ^Set MyLink = WshShell.CreateShortcut(strAllUsersStartup ^& "\start.lnk")" >>%temp%\tmp.vbs"
ECHO MyLink.TargetPath = "C:\MSIM" >>%temp%\tmp.vbs
ECHO MyLink.Save >>%temp%\tmp.vbs
cscript /nologo %temp%\tmp.vbs
DEL /q /s %temp%\tmp.vbs 2>nul 1>nul
这么长,恐怕也很难实现。
所以办法是用一个string储存上面这么长的文字,然后打开cmd,用string写入。
在网上找了下
using System;
string str = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
System.Diagnostics.Process pro = new System.Diagnostics.Process();
pro.StartInfo.FileName = "cmd.exe";
pro.StartInfo.UseShellExecute = false;
pro.StartInfo.RedirectStandardError = true;
pro.StartInfo.RedirectStandardInput = true;
pro.StartInfo.RedirectStandardOutput = true;
pro.StartInfo.CreateNoWindow = true;

pro.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
pro.Start();
pro.StandardInput.WriteLine(str);//在这位里你需要写入执行命令行。。你的意思没有表达清楚啊
pro.StandardInput.WriteLine("exit");
这个命令似乎没用呀?

var processStartInfo = new ProcessStartInfo(fileName, arguments);
 
    processStartInfo.UseShellExecute = false;
    processStartInfo.ErrorDialog = false;
    //是否显示窗口
    processStartInfo.CreateNoWindow = true;
    //重定向标准错误
    processStartInfo.RedirectStandardError = true;
    //重定向标准输入
    processStartInfo.RedirectStandardInput = true;
    //重定向标准输出
    processStartInfo.RedirectStandardOutput = true;



请看下面这个链接,文章里有详细的代码和解释


http://www.codeproject.com/Articles/335909/Embedding-a-Console-in-a-C-Application

追问

你能说详细点吗?英文我看不懂。

追答

直接看代码 还不详细啊! 

 public static void RunCmdWithoutResult(string file, string command, bool wait)
        
            //创建实例
            Process p = new Process();
            //设定调用的程序名,不是系统目录的需要完整路径
            p.StartInfo.FileName = file;
//传入执行参数
            p.StartInfo.Arguments = " " + command; 
            p.StartInfo.UseShellExecute = false;
//是否重定向标准输入
            p.StartInfo.RedirectStandardInput = false; 
//是否重定向标准转出
            p.StartInfo.RedirectStandardOutput = false;
//是否重定向错误
            p.StartInfo.RedirectStandardError = false;
//执行时是不是显示窗口
            p.StartInfo.CreateNoWindow = true;
//启动
            p.Start(); 
            if (wait)
            
//是不是需要等待结束
                p.WaitForExit();
            
            p.Close();
        
        
        把上面你要执行的bat写到一个文件中
        
        然后可以这样调用 
        
        
      RunCmdWithoutResult("cmd.ex",bat文件的完整路径,true或false)

追问

都说了不能有两个文件呀。

追答

那就直接拼接成一行 传入 。

追问

怎么拼?

追答

自己去学学c#基础吧

参考技术A 醉了,echo那几句你就直接用C#来写文件啊,FileStream啊
而且你这么一大段的意思就是把一些文字输出到tmp.vbs然后执行并删除
全部都用C#就好了弄cmd干毛啊!
参考技术B 我觉得最简单的是这种方式:写个批处理,然后用process.start()调用。手机写的,测试时注重大小写!

C# 调用cmd命令

/*****************************************************************
 *                       C# 调用cmd命令
 * 说明:
 *     本文记录一下C#怎么调用cmd命令。
 *     
 *                               2016-7-3 深圳 南山平山村 曾剑锋
 ****************************************************************/

一、参考文章:
    C#程序调用cmd执行命令
        http://www.cnblogs.com/babycool/p/3570648.html

 

以上是关于c#怎么调用cmd的命令呀?或者说怎么向cmd中写入命令?的主要内容,如果未能解决你的问题,请参考以下文章

C# 调用cmd命令

cmd命令延迟怎么处理

这句 java程序中 cmd.process(target);代码怎么理解呀?求解释。

wpf程序调用cmd命令行的方法(C#语言调用C++写的程序)?

CMD 命令提示符 COMMAND 的区别是啥?详细

vb Shell怎么执行多条cmd命令