【问题标题】:How to run a .bat file from a C# forms application? [duplicate]如何从 C# 表单应用程序运行 .bat 文件? [复制]
【发布时间】:2014-12-27 08:22:05
【问题描述】:

我正在尝试运行一个批处理文件,而该批处理文件又运行一个 .exe(在您询问之前,这是必要的)。我已经尝试了this question 的答案,但代码对我不起作用。我一直在使用 System.Diagnostics.Process.Start("bat/directory/batname.bat");
但它没有用;它似乎打开了文件,但在运行 .exe 之前退出了它
请帮忙!

编辑
我试过的代码如下:
1 - "System.Diagnostics.Process.Start("G:/Software/Games/Files/Minecraft/minecraft.bat/");"
2 -
proc.StartInfo.FileName = target;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;

'proc.Start();'

proc.WaitForExit
( (timeout <= 0)
? int.MaxValue : timeout * NO_MILLISECONDS_IN_A_SECOND *
NO_SECONDS_IN_A_MINUTE
);

errorMessage = proc.StandardError.ReadToEnd();
proc.WaitForExit();

outputMessage = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();

我知道它正在打开,因为出现了 cmd 并且我在其中看到了相应的代码。

【问题讨论】:

  • 您甚至可以从 iis 管理中将批处理文件或 exe 添加到 cgi 脚本中
  • 我不明白.. 抱歉我是菜鸟;我做 C# 才 6 个月 :)
  • 请更具体。展示一个对您不起作用的完整、最小的代码示例,并确切地告诉我们它是如何“不起作用”的。你怎么知道它“打开了文件”?是否有任何迹象表明批次本身已被发现,更不用说执行了?
  • 检查你的bat文件path.
  • 您能否更具体地说明您尝试运行批处理时发生的情况?你有没有收到错误,有没有打开一个窗口(它有没有说什么)?你能把你的 Process.Start 行包装在一个 try 块中,捕获任何异常,并告诉我们它们是什么吗?

标签: c#


【解决方案1】:

需要考虑的事项。 (一开始要保持简单:))

  1. 确保*.bat 文件路径准确无误。只是为了确保您可以通过以下方式检查它:

    if(File.Exists(yourBatchFilePath))

  2. 您可以测试一个简单的批处理文件来查看您的代码是否正在运行。 echo "What ever!" >> whatever.txt 将文件另存为c:\myTest.bat 如果您的代码正确,c: 中应该存在一个包含 "What ever!" 文本的 whatever.txt 文件。

【讨论】:

  • 我知道批处理可以工作,因为我以前运行过它。
  • 另外File.Exists() 显然不是一个有效的命令。 “文件在当前上下文中不存在”。
  • File.Exists() 怎么可能不是一个有效的命令?啊,好的。如果您还没有这样做,您必须在标题中添加using System.IO;
  • 抱歉,标题是什么?
  • 只需添加using System.IO: 即可使用File.Exists()。它应该与其他 using 语句一起存在。这应该不难找到。
猜你喜欢
  • 1970-01-01
  • 2020-03-11
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 2020-08-22
  • 1970-01-01
相关资源
最近更新 更多