Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 启动可执行文件并传递参数_C#_Command_Executable - Fatal编程技术网

C# 启动可执行文件并传递参数

C# 启动可执行文件并传递参数,c#,command,executable,C#,Command,Executable,我以前确实做过类似的事情,但有些事情不太对劲,我也不是100%确定是什么 我有一个可执行文件executable.exe,它接收一个文件,执行一些魔术,然后在其他地方输出第二个文件。因此,当我通过CMD运行这个可执行文件时,我所需要做的就是传递“path1”和“path2”。我将路径放在引号中,因为它们可能有空格 总之,我在c#应用程序中所做的是: public void methodToRunExecutable() { var exePath = "\""+ "C:\\SomePathToA

我以前确实做过类似的事情,但有些事情不太对劲,我也不是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"

而且效果很好。你知道我做错了什么吗?是因为
没有被转义吗?

转义很难看而且容易出错。使用
@
您将不需要转义:

var firstFilePath = @"C:\PathToFirstFile\NameOfFile.txt"
通过以下方式使用
过程也可能更容易:

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

即使Bob Horn说了什么(尽管我完全同意他的说法),您的代码也应该可以工作。实际上什么不起作用?所有路径真的存在吗?
在调试时显示为
\”
,但这并不阻止代码执行此任务。