如何使用 C# 在控制台应用程序中执行命令或进程

How to Execute a command or process in Console application using C#

我正在开发一个控制台应用程序,它将所有 spss (.sav) 文件转换为 .csv 文件。为此,我手动创建了一个 SPSS 作业 (spssJob1.spj)(使用一个 .sps 文件),我正在遍历所有输入文件(所有 .sav 文件)并尝试通过更新 运行 该作业.sps 文件中的输入和输出路径 (text.sps)。但我不知道如何从我的应用程序调用该作业执行命令。

目前命令为:

stats C:\Users522\Desktop\spssJob1.spj -production

这应该从

开始执行
C:\Program Files\IBM\SPSS\Statistics

因为此统计命令仅在该目录中可用。

所以在我的应用程序中,我需要从这个路径调用这个过程;我可以使用我的应用程序调用一个 .exe 文件,但我不知道如何从特定目录调用一个命令。

这是我的代码:

// getting all spss files from the from the input path 
FileInfo[] Files = new DirectoryInfo("D:\Input").GetFiles("*.sav");

// looping each files and calling the job
foreach (FileInfo file in Files)
{ 
    if (file.Name != "")
    {
        // updating the text.sps file for each job                       
        System.IO.File.WriteAllText("D:\Input\text.sps", string.Empty);
        System.IO.File.WriteAllText("D:\Input\text.sps", (Content for the file));

        // calling the process
        var p = new Process();
        // this code will work fine simply calling one exe
        p.StartInfo = new ProcessStartInfo((@"D:\Input\temp.exe"), "-n")
        // instead of this I need to call something like this
        // stats C:\Users522\Desktop\spssJob1.spj -production from this 
        // path C:\Program Files\IBM\SPSS\Statistics 
        {
            UseShellExecute = false
        };

        p.Start();
        p.WaitForExit();
    }
}
        ProcessStartInfo pi = new ProcessStartInfo("stats");
        pi.Arguments = @"C:\Users522\Desktop\spssJob1.spj -production";
        pi.WorkingDirectory = @"C:\Program Files\IBM\SPSS\Statistics";
        pi.UseShellExecute = false;
        Process.Start(pi);

您可以通过更改 ProcessStartInfo 的属性来完成此操作。

不确定统计信息是什么,如果它是一个 exe,那么您可以指定完整的 exe 路径并省略工作目录。

  var p = new Process();
                    p.StartInfo = new ProcessStartInfo("stats")
                    {
                        //UseShellExecute = false,
                        Arguments= @"C:\Users522\Desktop\spssJob1.spj -production",
                        WorkingDirectory = @"C:\Program Files\IBM\SPSS\Statistics",
                    };
                    p.Start();
                    p.WaitForExit();