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

C# 从C运行批处理文件中的批处理文件#,c#,batch-file,cmd,C#,Batch File,Cmd,我有两个批处理文件。 第一个是通过C代码启动的: 第二个bat在第一个bat内启动: %MY_PATH%\secondBat.bat 第一个按预期运行,但第二个(第一个蝙蝠内部)的执行被忽略。 在这一点之前,一切都是有效的 如果通过cmd.exe手动启动,则它可以工作 仅当通过C#启动时,它才不起作用 谢谢你的帮助 编辑:这是输出: C:\TheProg\XXXX\bin\Debug>C:\TheProg\XXXX\bin\Debug\secondBat.bat 它只是不执行尝试使用c

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

第二个bat在第一个bat内启动:

%MY_PATH%\secondBat.bat
第一个按预期运行,但第二个(第一个蝙蝠内部)的执行被忽略。 在这一点之前,一切都是有效的

如果通过cmd.exe手动启动,则它可以工作 仅当通过C#启动时,它才不起作用

谢谢你的帮助

编辑:这是输出:

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

它只是不执行尝试使用cmd.exe启动批处理文件,并提供包含批处理文件参数的路径,作为
System.Diagnostics.Process.start的参数

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

我试图重现你的问题。 我在
C:\simplebass

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
文件夹(不在
simplebass
中)中创建了一个
output.txt
文件,它具有预期的两行内容:

"bat1 started"
"bat2 started"

您是否绝对确定在您的情况下没有触发第二个.bat文件?可能是因为输出文件是在您的
Debug
文件夹中创建的,所以您看不到它被激发?这是我想到的唯一一件事。

如果使用“cmd/C”运行,效果也会一样吗?检查一下这个如何启动批处理文件的示例-看起来更详细,可能“正常工作”,尽管我不能提供更多的建议!不幸的是,这是我不想看到的标准场景。它与我的代码具有完全相同的效果@是的,我已经试过了。它似乎忽略了cmd.exe的参数。它只是打开cmd,然后cmd什么也不做。请尝试添加
/k
参数,以防止命令提示符关闭。这可能会包含一条错误消息,现在对吸毒者来说是显而易见的,这是不必要的,因为正如我所说的,窗口已经以这种方式打开了。没有错误消息,只是cmd提示等待输入是的,所有这些。它有点特别:它启动一个.exe两次(有效),然后复制两个文件(有效),然后应该“仅仅”启动第二个文件。bat编辑:我测试了会发生什么,如果我将.bat放在两个复制命令之前。。。它只是跳过了它。它不会停止或中止,它只是忽略了命令…谢谢大家,我现在知道了。。。这实际上是一个简单的寻路问题。文档中的标准文件夹名为“Visual Studio 2010”,中间有空格(经典)。因此,将文件夹移动到C:\Test就是解决方案。我现在有点尴尬。。。由于某些原因,我还不能发布答案…这是不同的,但你的第一句话给了我“点击”,这实际上是一个简单的路径查找问题。文档中的标准文件夹名为“Visual Studio 2010”,中间有空格(经典)。因此,将文件夹移动到C:\Test就是解决方案。我现在有点尴尬。。。由于某些原因,我还不能发布答案。。。
"bat1 started"
"bat2 started"