2011-03-03 40 views
0
public void runBatchfile(String batchfilename) 
{ 
    try 
    { 
     ProcessStartInfo processInfo = new ProcessStartInfo(batchfilename); 
     processInfo.UseShellExecute = false; 
     Process batchProcess = new Process(); 
     batchProcess.StartInfo = processInfo; 
     batchProcess.StartInfo.CreateNoWindow = true; 
     batchProcess.Start(); 
     batchProcess.WaitForExit(); 
    } 
    catch (Exception r) { } 
} 

runBatchfile(@"c:\lol.bat"); 

lol.bat包含以下两行C#应用程序不执行批处理文件命令正确

dir c:\ /s /b > c:\filelist.txt 
exit 

,当我跑我的代码它所做的就是创建一个filelist.txt文件,但实际上并没有执行其余的命令,如果我手动将它插入到CMD中,它会起作用。

顺便说一句我试过做扩展名.cmd,我也试过没有退出命令,没有任何其他结果。

请帮我:)

+2

您是否曾尝试执行CMD.EXE,将'/ C lol.bat'作为参数传递给它? –

回答

0

我从C#调用时遇到过这个问题。我通常使用的解决方法是在物理上允许它在运行命令时显示窗口。不知道为什么这会有所作为,但它在过去对我有用。

+0

我不能把显示窗口作为一个选项,但是谢谢 – user535448

1

在使用Visual Studio 2010的Windows 7 64位机器上,直接从IDE运行此代码不会执行任何操作。

在预感到它可能与写入驱动器C的根目录的权限有关时,我试图直接从具有管理权限的资源管理器窗口运行.exe(右键单击,以管理员身份运行)并且工作。

我想说这是一个权限问题。

也许你可以将输出重定向到位于别处的文件?

更新

我改变了批处理文件,以便dir命令被重定向到我的桌面,它运行得很好。

+0

是的,你不能在C:\ root上做鼻涕。 –

相关问题