c#应用程序无法正确执行批处理文件命令

时间:2011-03-03 21:26:32

标签: c# file batch-file cmd

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包含这两行

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

当我运行我的代码时,所有这一切都是创建一个filelist.txt文件,但实际上并没有执行命令的其余部分,如果我手动将其插入CMD,它会起作用。

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

请帮帮我:)。

2 个答案:

答案 0 :(得分:1)

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

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

我说这是一个许可问题。

也许您可以将输出重定向到位于其他位置的文件?

<强>更新

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

答案 1 :(得分:0)

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