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

使用C#中的参数执行命令行.exe分享

时间:2023-04-11 01:38:00 C#

C#学习教程:在C#中执行带参数的命令行.exe我原以为在C#中起床并实现这一点是微不足道的,但即使有了这个站点和其他站点上可用的所有资源,它也具有挑战性。我不知所措,所以我会提供尽可能多的细节。我当前的方法和代码如下,在调试器中,变量命令具有以下值。命令="C:\Folder1\Interfaces\Folder2\Common\JREbin\keytool.exe-import-noprompt-trustcacerts-aliasmyserver.us.goodstuff.world-fileC:\SSL_CERT.cer-storepasschangeit-keystorekeystore.jks“问题可能在于我如何调用和格式化我在该变量命令中使用的字符串。关于可能出什么问题的任何想法?ProcessStartInfoprocStartInfo=newProcessStartInfo("cmd","/c"+command);procStartInfo.RedirectStandardOutput=true;procStartInfo.UseShellExecute=false;procStartInfo.CreateNoWindow=true;Processprocess=newProcesspro();过程。开始();字符串结果=process.StandardOutput.ReadToEnd();控制台.WriteLine(结果);完成后,我不会返回变量结果中的任何信息或错误。等待进程结束(让它完成它的工作):ProcessStartInfoprocStartInfo=newProcessStartInfo("cmd","/c"+command);procStartInfo.RedirectStandardOutput=true;procStartInfo.UseShellExecute=false;procStartInfo.CreateNoWindow=true;//将IDisposable包装到using中(为了释放hProcess)using(Processprocess=newProcess()){process.StartInfo=procStartInfo;过程。开始();//添加这个:等到进程完成它的工作process.WaitForExit();//然后才读取结果字符串result=process.StandardOutput.ReadToEnd();控制台.WriteLine(结果);我意识到我可能遗漏了一些人将来可能需要解决这个问题的细节。以下是方法参数在运行时的值。我对对象ProcessStartInfo和Process需要什么才能正确站起来有点困惑我认为其他人也可能如此。exeDir=“C:folder1folder2binkeytool.exe”args=“–delete-noprompt-aliasserver.us.goodstuff.world-storepasschangeit-keystorekeystore.jks”publicboolExecuteCommand(stringexeDir,stringargs){try{ProcessStartInfoprocStartInfo=newProcessStartInfo();procStartInfo.FileName=exeDir;procStartInfo.Arguments=args;procStartInfo.RedirectStandardOutput=true;procStartInfo.UseShellExecute=false;procStartInfo.CreateNoWindow=true;使用(Processprocess=newProcess()){process.StartInfo=procStartInfo;过程。开始();过程.WaitForExit();字符串结果=process.StandardOutput.ReadToEnd();控制台.WriteLine(结果);}返回真;}catch(Exceptionex){Console.WriteLine("***Erroroccuredexecutingthefollowingcommands.");控制台.WriteLine(exeDir);控制台.WriteLine(args);Console.WriteLine(ex.Message);返回假;}在德米特里的协助和以下资源之间,http://www.codeproject.com/Articles/25983/How-to-Execute-a-C命令在C我能够拼凑起来谢谢!当谈到从C#执行CLI进程时,这似乎是一项简单的任务,但在您很久以后才注意到它之前存在许多陷阱。如果子进程将足够的数据写入stdout,则当前给出的答案都不起作用,例如,如此处所述。我写了一个库,它通过完全抽象进程交互来简化CLI的使用,通过实现一个方法CliWrap来解决整个任务。你的代码将是这样的:以上是C#学习教程:使用C#中的参数执行命令行.exe把所有内容分享给大家,如果对你有用还需要进一步了解C#学习教程,希望大家多多关注——varcli=newCli("cmd");varoutput=cli.Execute("/c"+command);varstdout=output.StandardOutput;管理员删除。如需转载请注明出处: