当前位置: 首页 > 编程语言 > C#

如何向命令窗口进程发送一系列命令?分享

时间:2023-04-10 13:29:08 C#

如何将一系列命令发送到命令窗口进程?我们的网络路径上有一些命令(批处理文件/可执行文件),我们必须调用它来初始化该命令窗口的“开发环境”。它设置了一些环境变量,向Path添加东西等。(然后,只有我们输入的任何工作命令才会被识别,我不知道那些初始化命令里面是什么)现在我的问题是,我想用C#程序来调用一系列“工作命令”,当然,只有完成初始设置,它们才会工作。我怎样才能做到这一点?目前,我正在从程序中创建一个批处理文件,例如:file.Writeline("InitializationStep1.bat")file.Writeline("InitializeStep2.exe")file.Writeline("InitializeStep3.exe")然后是实际命令file.Writeline("Dowork-arguments-flags-blah-blah")file.Writeline("DoMoreWork-arguments-flags-blah-blah")最后关闭文件编写器并运行这个批处理文件。现在,如果我直接使用Process.RunStart("cmd.exe","Dowork-arguments");执行它Process.RunStart("cmd.exe","Dowork-arguments");它不运行。我怎样才能以更简洁的方式实现这一点,以便我只需要运行一次init命令?(我每次都可以使用所有三个初始化程序运行cmd.exe,但它们会花费很多时间,所以我只想执行一次)正如@Hakeem指出的那样,System.Diagnostic.Process没有静态Run方法.我认为您指的是Start方法。完成构建批处理文件后,只需使用以下代码执行它,Processp=newProcess();p.StartInfo.FileName=batchFilePath;p.StartInfo.Arguments=@"-aarg1-barg2";p.开始();请注意,@符号必须以参数字符串为前缀,以便转义序列字符被视为文字。替代代码Process.Start(batchFilePath,@"-aarg1-barg2");或ProcessStartInfoprocessStartInfo=newProcessStartInfo();processStartInfo.FileName=batchFilePath;processStartInfo.Arguments=@"-aarg1-barg2";过程。开始(processStartInfo);更多信息多命令批处理文件示例dir/Opausedirpause将此文件另存为.bat并使用Start方法执行它。在这种情况下,您可以使用命令在批处理文件本身中指定参数(在上面的示例中,为dir命令指定了/O选项。我认为您已经完成了批处理文件创建部分,现在只需追加参数到批处理文件中的命令。将输入重定向到进程由于要将多个命令发送到同一个cmd进程,您可以重定向进程的标准输入以从程序而不是键盘获取输入。该代码的灵感来自于一个类似的问题:UsingC#toexecutemultiplecommandlineswiththesameprocessprivatestringProcessRunner(){ProcessStartInfoprocessStartInfo=newProcessStartInfo("cmd.exe");processStartInfo.RedirectStandardInput=true;processStartInfo.RedirectStandardOutput=true;processStartInfo.UseShellExecute=false;流程process=Process.Start(processStartInfo);if(process!=null){process.StandardInput.WriteLine("dir");process.StandardInput.WriteLine("mkdirtestDir");处理.StandardInput.WriteLine("echohello");//process.StandardInput.WriteLine("yourCommand.exearg1arg2");process.StandardInput.Close();//添加行以停止进程在ReadToEnd()上挂起stringoutputString=process.StandardOutput.ReadToEnd();返回输出字符串;}返回字符串。空;}此方法返回命令执行的输出。以类似的方式,您也可以重定向并读取进程的StandardOuput流。您在System.Diagnostics命名空间的Process类中提到的Process.Run方法是什么?AFAIK,Process类型没有名为Run的静态或实例方法。如果您还没有尝试过Process上的Start方法,它可以是实例或静态方法。以上就是C#学习教程:如何向命令窗口进程发送一系列命令?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: