【问题标题】:Run Batch-file inside Batch-file from C#从 C# 在批处理文件中运行批处理文件
【发布时间】:2014-06-16 11:20:20
【问题描述】:

我有两个批处理文件。 第一个是通过C#代码启动的:

System.Diagnostics.Process.Start(System.Environment.CurrentDirectory + "\\Files\\myBat.bat",  parameters + " > output.txt");

第二个球棒在第一个球棒内开始:

%MY_PATH%\secondBat.bat

第一个按预期运行,但第二个(在第一个 bat 内)的执行被忽略。 这一切都有效,直到这一点。

如果通过 cmd.exe 手动启动它确实有效 只有通过 C# 启动它才不起作用。

感谢您的帮助

编辑:这是输出:

C:\TheProg\XXXX\bin\Debug>C:\TheProg\XXXX\bin\Debug\secondBat.bat

它只是不执行

【问题讨论】:

  • 使用“cmd /C”运行效果一样吗?
  • 查看这个如何启动批处理文件的示例 - 看起来更加冗长,并且可能“正常工作”,尽管我无法提供更多建议! stackoverflow.com/a/5519517/1370442
  • 不幸的是,这是我不想要的标准场景。它与我的代码具有完全相同的效果。 @Artem Razin:是的

标签: c# batch-file cmd


【解决方案1】:

我已尝试重现您的问题。 我在C:\simplebats 中创建了测试 .bat 文件

bat1.bat:

@echo off
echo "bat1 started"
C:\simplebats\bat2.bat

bat2.bat:

echo "bat2 started"

我按照你的方式从 Visual Studio 运行 bat1:

System.Diagnostics.Process.Start("C:\\simplebats\\bat1.bat", " > output.txt");

在我运行它之后,在我的Debug 文件夹(不在simplebats)中创建了一个output.txt 文件,并且它具有预期的两行:

"bat1 started"
"bat2 started"

您确定第二个 .bat 文件在您的情况下没有被触发吗?也许您看不到它被触发,因为输出文件是在您的Debug 文件夹中创建的?这是我唯一想到的事情..

【讨论】:

  • 这是不同的,但你的第一句话给了我“点击”这实际上是一个简单的寻路问题。文档中的标准文件夹名为“Visual Studio 2010”,中间有空格(经典)。因此,只需将文件夹移动到 C:\Test 就是解决方案。我现在有点尴尬...由于某种原因我还不能发布答案...
【解决方案2】:

尝试使用 cmd.exe 启动批处理文件并提供包含批处理文件参数的路径,作为 System.Diagnostics.Process.Start 的参数

System.Diagnostics.Process.Start("cmd.exe" , System.Environment.CurrentDirectory + "\\Files\\myBat.bat" +  parameters + " > output.txt");

【讨论】:

  • 你好,我已经试过了。它似乎忽略了 cmd.exe 的参数。它只是打开 cmd,然后 cmd 什么都不做。
  • 尝试添加/k 参数以防止命令提示符被关闭。这可能包含一条错误消息,现在将可见
  • AcidJunkie,这是不必要的,因为正如我所说,窗口已经以这种方式保持打开状态。没有错误信息,只是 cmd-prompt 等待输入
  • 是的,所有这些。有点特别:它启动 .exe 两次(工作),然后复制两个文件(工作),然后应该“只是”启动第二个 .bat 编辑:我测试了如果我把 .bat BEFORE 会发生什么两个复制命令......它只是跳过它。它不会停止或中止,它只是忽略命令...
  • 谢谢大家,我现在明白了……这实际上是一个简单的寻路问题。文档中的标准文件夹名为“Visual Studio 2010”,中间有空格(经典)。因此,只需将文件夹移动到 C:\Test 就是解决方案。我现在有点尴尬...由于某种原因我还不能发布答案...
猜你喜欢
  • 2011-10-29
  • 2012-12-18
  • 1970-01-01
  • 2012-08-07
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
相关资源
最近更新 更多