如何使用 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();
我正在开发一个控制台应用程序,它将所有 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();