【问题标题】:Starting an executable and passing arguments启动可执行文件并传递参数
【发布时间】:2012-12-07 02:25:59
【问题描述】:

我以前肯定做过类似的事情,但有些事情不正常,我不能 100% 确定它是什么。

我有一个可执行文件executable.exe,它接受一个文件,执行一些魔法并在其他地方输出第二个文件。所以当我通过 CMD 运行这个可执行文件时,我需要做的就是传递"path1" 和"path2"。我将路径放在引号中,因为它们可能有空格。

无论如何,我在我的 c# 应用程序中所做的事情是这样的:

public void methodToRunExecutable()
{
var exePath = "\""+ "C:\\SomePathToAnExecutable" + "\"";
var firstFilePath = "C:\\PathToFirstFile\\NameOfFile.txt"
var secondFilePath= "C:\\PathToSecondFile\\NameOfFile.txt"

Process.Start(exePath, "\""firstFilePath + "\" \"" + secondFilePath+"\"")
}

但是,我在调试时注意到"\"" 实际上显示为\",就像反斜杠没有转义引号一样。

需要明确的是,当我运行 CMD exe 时,我所要做的就是:

"C:\\PathToFirstFile\\NameOfFile.txt" "C:\\PathToSecondFile\\NameOfFile.txt"

而且效果很好。关于我做错了什么的任何想法?是不是因为" 没有被转义?

【问题讨论】:

  • 尽管 Bob Horn 说了什么(尽管我绝对同意他的观点),但您的代码应该可以工作。实际上什么不起作用?所有路径真的存在吗?
  • " 在调试时显示为\",但它不会阻止代码完成这项工作。

标签: c# command executable


【解决方案1】:

转义是丑陋且容易出错的。使用@,你就不需要逃跑了:

var firstFilePath = @"C:\PathToFirstFile\NameOfFile.txt"

这样使用Process 也可能更容易:

using (Process process = new Process())
{
    process.StartInfo.FileName = exePath;
    process.StartInfo.Arguments = ""; // args here
    process.Start();
}

【讨论】:

    猜你喜欢
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 2011-06-09
    • 2012-05-05
    • 1970-01-01
    • 2011-06-17
    相关资源
    最近更新 更多