Run Command Prompt Commands

问题描述 投票:565回答:13

是否可以从C#应用程序中运行命令提示符命令?如果是这样,我将如何执行以下操作:

copy /b Image1.jpg + Archive.rar Image2.jpg

这基本上是将RAR文件嵌入JPG图像中。我只是想知道在C#中是否有一种自动执行此操作的方法。

c# .net command-line command prompt
13个回答
867
投票

这就是从C#运行shell命令所要做的一切>

string strCmdText;
strCmdText= "/C copy /b Image1.jpg + Archive.rar Image2.jpg";
System.Diagnostics.Process.Start("CMD.exe",strCmdText);

编辑:

这是隐藏cmd窗口。

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C copy /b Image1.jpg + Archive.rar Image2.jpg";
process.StartInfo = startInfo;
process.Start();

编辑:2

重要的是,该参数以/C开头,否则它将不起作用。 Scott Ferguson怎么说:“执行由字符串指定的命令,然后终止。”


5
投票

2
投票

您可以通过使用以下方法(如其他答案中所述)来实现:


0
投票

您可以简单地以string strCmdText; strCmdText = "'/C cd " + path + " && composer update && composer install -o'"; Process.Start("CMD.exe", strCmdText); 格式扩展名编写代码,批处理文件的代码:


0
投票

如果要在异步模式下运行命令-并打印结果。你可以上这个课吗:


108
投票

尝试了@RameshVel解决方案,但无法在控制台应用程序中传递参数。如果有人遇到同样的问题,这里是一个解决方案:


33
投票
var proc1 = new ProcessStartInfo();
string anyCommand; 
proc1.UseShellExecute = true;

proc1.WorkingDirectory = @"C:\Windows\System32";

proc1.FileName = @"C:\Windows\System32\cmd.exe";
proc1.Verb = "runas";
proc1.Arguments = "/c "+anyCommand;
proc1.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(proc1);

10
投票

尽管从技术上讲,这不能直接回答所提出的问题,但确实可以回答如何做原始海报想要做的事情:合并文件。如果有的话,这是一篇帮助新手了解Instance Hunter和Konstantin在说什么的文章。


8
投票

是的,(请参阅Matt Hamilton评论中的链接),但是使用.NET的IO类会更容易,更好。您可以使用File.ReadAllBytes读取文件,然后使用File.WriteAllBytes写入“嵌入式”版本。


8
投票

上述答案均由于某种原因没有帮助,似乎它们清除了所有错误,使对命令的故障排除变得困难。所以我最终做了这样的事情,也许它将对其他人有所帮助:


6
投票

您可以在一行中使用CliWrap执行此操作:


6
投票

如果要保持cmd窗口打开或要在winform / wpf中使用它,请像这样使用它


5
投票

这里有点简单,代码版本也少。它也会隐藏控制台窗口-

© www.soinside.com 2019 - 2024. All rights reserved.