C# 启动可执行文件并传递参数
我以前确实做过类似的事情,但有些事情不太对劲,我也不是100%确定是什么 我有一个可执行文件C# 启动可执行文件并传递参数,c#,command,executable,C#,Command,Executable,我以前确实做过类似的事情,但有些事情不太对劲,我也不是100%确定是什么 我有一个可执行文件executable.exe,它接收一个文件,执行一些魔术,然后在其他地方输出第二个文件。因此,当我通过CMD运行这个可执行文件时,我所需要做的就是传递“path1”和“path2”。我将路径放在引号中,因为它们可能有空格 总之,我在c#应用程序中所做的是: public void methodToRunExecutable() { var exePath = "\""+ "C:\\SomePathToA
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说了什么(尽管我完全同意他的说法),您的代码也应该可以工作。实际上什么不起作用?所有路径真的存在吗?“
在调试时显示为\”
,但这并不阻止代码执行此任务。