在我的控制台应用程序中,我需要执行一系列命令:
D:
cd d:\datafeeds
grp -encrypt -myfile.xls
这组命令实际上使用工具(gpg)加密文件 我该怎么做?
答案 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中执行命令。
答案 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属性对所有内容进行编码。当你必须改变某些东西而你没有可用的代码时,它会更灵活。