有没有办法在c#应用程序中运行命令提示符命令?如果是这样,我该如何做以下几点:
copy /b Image1.jpg + Archive.rar Image2.jpg
这基本上是在JPG图像中嵌入一个RAR文件。我只是想知道在c#中是否有一种方法可以自动做到这一点。
有没有办法在c#应用程序中运行命令提示符命令?如果是这样,我该如何做以下几点:
copy /b Image1.jpg + Archive.rar Image2.jpg
这基本上是在JPG图像中嵌入一个RAR文件。我只是想知道在c#中是否有一种方法可以自动做到这一点。
当前回答
这里是一个小简单和较少的代码版本。它也会隐藏控制台窗口
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/C copy /b Image1.jpg + Archive.rar Image2.jpg";
process.Start();
其他回答
虽然从技术上讲,这并没有直接回答提出的问题,但它确实回答了如何做原始海报想做的事情:合并文件。如果有的话,这篇文章是为了帮助新手理解Instance Hunter和Konstantin在说什么。
这是我用来组合文件(在本例中是jpg和zip)的方法。注意,我创建了一个缓冲区,填充zip文件的内容(以小块的形式,而不是在一个大的读取操作中),然后缓冲区被写入jpg文件的后面,直到到达zip文件的末尾:
private void CombineFiles(string jpgFileName, string zipFileName)
{
using (Stream original = new FileStream(jpgFileName, FileMode.Append))
{
using (Stream extra = new FileStream(zipFileName, FileMode.Open, FileAccess.Read))
{
var buffer = new byte[32 * 1024];
int blockSize;
while ((blockSize = extra.Read(buffer, 0, buffer.Length)) > 0)
{
original.Write(buffer, 0, blockSize);
}
}
}
}
你可以使用简单的。bat格式的代码扩展名,批处理文件的代码:
c:/ copy /b Image1.jpg + Archive.rar Image2.jpg
使用下面的c#代码:
Process.Start(“file_name.bat”)
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);
出于某种原因,上面的答案都没有帮助,似乎他们把错误扫到地毯下,使故障排除变得困难。所以我最终选择了这样的东西,也许它会帮助到其他人:
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = @"C:\Program Files\Microsoft Visual Studio 14.0\Common7\IDE\tf.exe",
Arguments = "checkout AndroidManifest.xml",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true,
WorkingDirectory = @"C:\MyAndroidApp\"
}
};
proc.Start();
如果你想保持CMD窗口打开,或者想在winform/wpf中使用它,那么就像这样使用它
string strCmdText;
//For Testing
strCmdText= "/K ipconfig";
System.Diagnostics.Process.Start("CMD.exe",strCmdText);
/K
将保持cmd窗口打开吗