我有两个批处理文件。 第一个是通过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
它没有执行
答案 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
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
文件夹中创建的?这是我唯一想到的东西..