想要在命令提示符窗口中执行命令

时间:2012-11-06 21:03:17

标签: c# command-prompt

在我的控制台应用程序中,我需要执行一系列命令:

D:
cd d:\datafeeds
grp -encrypt -myfile.xls

这组命令实际上使用工具(gpg)加密文件 我该怎么做?

4 个答案:

答案 0 :(得分:1)

你可以创建一个进程。要使用它,请在grp所在的文件夹中执行生成的.exe。

 Process process1 = new Process();
 process1.StartInfo.UseShellExecute = false;
 process1.StartInfo.RedirectStandardOutput = true;
 process1.StartInfo.FileName = "cmd.exe";
 process1.StartInfo.Arguments = "/C grp -encrypt -myfile.xls";

答案 1 :(得分:1)

其他答案未提及设置WorkingDirectory的功能。这消除了对目录更改操作的需要以及将可执行文件存储在datafeeds目录中的需要:

Process proc = new Process();
proc.StartInfo.WorkingDirectory = "D:\\datafeeds";
proc.StartInfo.FileName = "grp";
proc.StartInfo.Arguments = "-encrypt -myfile.xls";
proc.Start();

// Comment this out if you don't want to wait for the process to exit.
proc.WaitForExit();

答案 2 :(得分:0)

Process.start允许您在shell中执行命令。

请参阅此问题:ShellExecute equivalent in .NET

答案 3 :(得分:0)

创建包含命令的批处理文件 然后使用Process.Start和ProcessStartInfo类来执行批处理。

  ProcessStartInfo psi = new ProcessStartInfo(@"d:\datafeeds\yourbatch.cmd");
  psi.WindowStyle = ProcessWindowStyle.Minimized;
  psi.WorkingDirectory = @"d:\datafeeds";
  Process.Start(psi);

ProcessStartInfo包含其他有用的属性See MSDN docs
Process和ProcessStartInfo需要using System.Diagnostics;

在这种情况下(当您需要运行命令行工具时)我更喜欢使用批处理方法,而不是通过ProcessStartInfo属性对所有内容进行编码。当你必须改变某些东西而你没有可用的代码时,它会更灵活。