使用Writeline创建批处理文件

时间:2013-07-22 14:59:06

标签: c# streamwriter

尝试使用以下代码使用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();

4 个答案:

答案 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)

你只需要一个" \"因为你正在使用" @"符号