0

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

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

这组命令实际上使用工具 (gpg) 加密文件。
我将如何做?

4

4 回答 4

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";
于 2012-11-06T21:06:41.630 回答
1

其他答案没有提到设置工作目录的能力。这消除了对目录更改操作的需要以及将可执行文件存储在 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();
于 2012-11-06T21:09:45.430 回答
0

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

看到这个问题:ShellExecute 等效于 .NET

于 2012-11-06T21:05:52.267 回答
0

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

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

ProcessStartInfo 包含其他有用的属性请参阅 MSDN 文档
Process 和 ProcessStartInfo 需要using System.Diagnostics;

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

于 2012-11-06T21:07:38.973 回答