【问题标题】:How to write bat script in C#如何在 C# 中编写 bat 脚本
【发布时间】:2018-12-05 18:50:43
【问题描述】:

我在 VisualStudio 中有 .bat 脚本,我用 C# 代码调用它们。这是一个脚本和我调用脚本的 C# 代码。如何在我的 C# 代码中直接编写 .bat 脚本?

//bat script
set SERVICENAME=%1%
arbstate -t %SERVICENAME%

//C# code
Process process = new Process();
process.StartInfo.FileName = "Scripts\\CheckServiceState.bat";
process.StartInfo.Arguments = serviceName;

【问题讨论】:

  • “我如何在我的 C# 代码中直接编写 .bat 脚本” - 不确定你的意思,但你可以在代码中创建一个脚本并使用 File.WriteAllLines(batchFileName, script) 来写出来
  • 为什么一个有能力的程序员会问这个。也许你应该问我如何做用户程序所做的事情。
  • 您是否正在尝试编写 C#/batch 混合脚本,如果您将文件作为 C# 运行,它将运行 C# 部分,如果您将其作为批处理运行,它将运行批处理部分?
  • .BAT 脚本/文件是一个文件!如果您询问如何在 C# 中创建文件,请参阅上面的 @stuartd 评论。如果您想从 C# 程序执行批处理代码而不创建文件,请参阅this answer(执行cmd.exe 并重定向其输入)

标签: c# .net batch-file process


【解决方案1】:

BAT 文件由命令 shell cmd.exe 解释。因此,您必须启动 cmd.exe 并将 BAT 文件的路径作为参数传递。有关示例和背景信息,请参见此处:Why does Process.Start("cmd.exe", process); not work?

【讨论】:

  • “所以你必须启动 cmd.exe 并将 BAT 文件的路径作为参数传递” 不是这样。在 C# 中,您可以使用 Process.Start(batchFileName)
  • @stuartd:谢谢,不知道。我总是以“cmd.exe /c”的方式来做。
猜你喜欢
  • 2020-04-15
  • 2017-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多