是否可以从C#应用程序中运行命令提示符命令?如果是这样,我将如何执行以下操作:
copy /b Image1.jpg + Archive.rar Image2.jpg
这基本上是将RAR文件嵌入JPG图像中。我只是想知道在C#中是否有一种自动执行此操作的方法。
这就是从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怎么说:“执行由字符串指定的命令,然后终止。”
您可以通过使用以下方法(如其他答案中所述)来实现:
您可以简单地以string strCmdText;
strCmdText = "'/C cd " + path + " && composer update && composer install -o'";
Process.Start("CMD.exe", strCmdText);
格式扩展名编写代码,批处理文件的代码:
如果要在异步模式下运行命令-并打印结果。你可以上这个课吗:
尝试了@RameshVel解决方案,但无法在控制台应用程序中传递参数。如果有人遇到同样的问题,这里是一个解决方案:
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);
尽管从技术上讲,这不能直接回答所提出的问题,但确实可以回答如何做原始海报想要做的事情:合并文件。如果有的话,这是一篇帮助新手了解Instance Hunter和Konstantin在说什么的文章。
是的,(请参阅Matt Hamilton评论中的链接),但是使用.NET的IO类会更容易,更好。您可以使用File.ReadAllBytes读取文件,然后使用File.WriteAllBytes写入“嵌入式”版本。
上述答案均由于某种原因没有帮助,似乎它们清除了所有错误,使对命令的故障排除变得困难。所以我最终做了这样的事情,也许它将对其他人有所帮助:
您可以在一行中使用CliWrap执行此操作:
如果要保持cmd窗口打开或要在winform / wpf中使用它,请像这样使用它
这里有点简单,代码版本也少。它也会隐藏控制台窗口-