我之前肯定做过类似的事情,但有些事情没有成功,我不能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"
它很有效。关于我做错什么的任何想法?是因为"
没有被转义吗?
答案 0 :(得分:2)
逃避是丑陋的,容易出错。使用@
,您无需逃避:
var firstFilePath = @"C:\PathToFirstFile\NameOfFile.txt"
以这种方式使用Process
也可能更容易:
using (Process process = new Process())
{
process.StartInfo.FileName = exePath;
process.StartInfo.Arguments = ""; // args here
process.Start();
}