【发布时间】:2018-12-20 18:01:14
【问题描述】:
如果我在命令窗口中运行此命令,它会运行良好并给出我期望的结果。我首先通过CD FilePath 访问FilePath。然后运行带有标志的命令并将输出发送到 DestPath。
C:\Program Files (x86)\ProgramName\FileName.exe -f > C:\Temp\Test.txt
但是,它没有通过以下过程运行。我浏览了很多论坛并尝试了解决方案,但都没有奏效。
public const string FilePath = @"C:\\Program Files (x86)\\ProgramName\\FileName.exe";
public const string DestPath = @"C:\\Temp\\Test.txt";
public static void GetResults()
{
ProcessStartInfo process = new ProcessStartInfo
{
UseShellExecute = true,
CreateNoWindow = false,
FileName = @"cmd",
};
string Command = @"/c " + FilePath + " -f > " + DestPath;
process.Arguments = Command;
process.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(process);
Thread.Sleep(2000);
关于如何纠正这个问题或我可能做错了什么有什么建议吗?
【问题讨论】:
-
您的路径可以包含空格(在上面的示例代码中,FilePath 已经包含)。因此,请确保在命令字符串中的路径周围加上引号,否则传递给 cmd.exe 的命令行参数会分崩离析(由于包含空格的非引号路径参数)。 (旁注:当您使用逐字字符串文字
@"....."时,为什么要转义反斜杠?) -
输入 cmd.exe 所在位置的完整路径:FileName = @"cmd",
-
提示:为了让您自己更轻松地进行故障排除,首先尝试使用与控制台中代码的命令字符串中完全相同的参数来运行/模仿您对 cmd.exe 的调用。 (例如,在控制台中输入:
cmd /c... 后跟命令字符串的内容) -
这是我们内部开发的程序,外部无法使用。我正在搜索更多内容并找到了此页面。 “community.spiceworks.com/topic/…”。这正是我需要的。但是当我以这种方式运行时,它说“C:\ Program”不是内部程序。我认为它无法解析完整的路径。我想去: cd C:\Program Files (x86)\ProgramPath 然后运行命令,把结果放到 C:\Temp\Test.txt: \retrieve -f > C:\Temp\Test.txt
-
这是有效但不输出到文件的代码... ____________ ProcessStartInfo Process = new ProcessStartInfo { UseShellExecute = false, CreateNoWindow = false, FileName = @"C:\Program Files (x86)\程序名\Command.exe", };字符串 RunCommand = @"/c C:\Program Files (x86)\ProgramName\Command.exe -f > C:\Temp\Test.txt"; Process.Arguments = RunCommand; Process.Start(进程); Console.WriteLine(RunCommand); Console.ReadLine();
标签: c# windows processstartinfo