尝试使用以下代码使用writeline创建批处理文件。但是,由于文件路径中的空格,似乎第三行不会在批处理文件中运行。我试图用“”“”括起来,但这会产生6个新的错误。谢谢我是新手,只是想要有所帮助。在搜索网络后,似乎无法找到解决方案。
StreamWriter w = new StreamWriter(@"C:\temp\InstallAgent.bat");
w.WriteLine("C:\\temp\\framepkg.exe /install=agent /silent");
w.WriteLine("C:\\PRogram Files\\McAfee\\Common Framework\\cmdagent.exe /p");
w.Close();
答案 0 :(得分:4)
您需要使用\"
"\"C:\\Program Files\\McAfee\\Common Framework\\cmdagent.exe\" /p");
答案 1 :(得分:4)
我认为,使用Path.Combine
是最安全的方法,不用担心在路径中转义空格和斜杠。
e.g。
var myBatFilePath = Path.Combine("C:", "temp", "InstallAgent.bat");
var framepkgExe = Path.Combine("C:", "temp", "framepkg.exe");
var cmdAgentExe = Path.Combine("C:", "Program Files", "McAfee", "Common Framework", "cmdagent.exe");
StreamWriter w = new Streamwriter(myBatFilePath);
w.WriteLine(framepkgExe + " /silent");
w.WriteLine(cmdAgentExe + " /p");
w.CLose();
无论如何......将路径放到var中的文件将在以后添加错误处理时帮助您...(也许您不应该等待添加)。 我会问为什么你要写一个批处理文件,而不是只管理你的C#代码中的执行...但你没有问过这个问题。 : - )
e.g。
if (File.Exists(framepkgExe))
...
答案 2 :(得分:1)
您需要在文件中写引号。这样做:
string path = Path.Combine(Application.StartupPath, "test.bat");
if (File.Exists(path))
{
File.Delete(path);
using (StreamWriter w = new StreamWriter(path))
{
w.WriteLine(@"C:\\temp\\framepkg.exe /install=agent /silent");
w.WriteLine("\"C:\\PRogram Files\\McAfee\\Common Framework\\cmdagent.exe /p\"");
w.Close();
}
}
批处理文件中的OUTPUT :
C:\\temp\\framepkg.exe /install=agent /silent
"C:\PRogram Files\McAfee\Common Framework\cmdagent.exe /p"
答案 3 :(得分:0)
这就是答案: w.WriteLine(@" C:\ ...&#34)
你只需要一个" \"因为你正在使用" @"符号