使用Writeline创建批处理文件
本文关键字:批处理文件 创建 Writeline 使用 | 更新日期: 2023-09-27 18:24:19
尝试使用下面的代码使用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();
您需要用'"
转义多余的引号
"'"C:''Program Files''McAfee''Common Framework''cmdagent.exe'" /p");
我认为,使用Path.Combine
是最安全的方法,不用担心在路径中转义空格和斜杠。
例如
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#代码的执行。。。但你没有问。:-)
例如
if (File.Exists(framepkgExe))
...
您需要在文件中写引号。这样做:
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"
这是答案:w.WriteLine(@"C:''…")
您只需要一个"''",因为您用"@"符号来转义它。