从C#批处理文件中运行批处理文件

时间:2014-06-16 11:20:21

标签: c# batch-file cmd

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

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

第二个蝙蝠在第一个蝙蝠内部开始:

%MY_PATH%\secondBat.bat

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

如果通过cmd.exe手动启动它可以工作 如果通过C#启动它只能起作用。

感谢您的帮助

编辑:这是输出:

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

它没有执行

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我试图重现你的问题。 我在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");

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

"bat1 started"
"bat2 started"

您是否完全确定在您的情况下不会触发第二个.bat文件?也许您无法看到它被解雇,因为输出文件是在Debug文件夹中创建的?这是我唯一想到的东西..