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,我也试过没有退出命令,没有任何其他结果。
请帮帮我:)。
答案 0 :(得分:1)
在使用Visual Studio 2010的Windows 7 64位计算机上,直接从IDE运行此代码不会执行任何操作。
预感它可能与写入驱动器C:的根目录的权限有关,我尝试直接从具有管理员权限的资源管理器窗口运行.exe(右键单击,以管理员身份运行)和有效。
我说这是一个许可问题。
也许您可以将输出重定向到位于其他位置的文件?
<强>更新强>:
我更改了批处理文件,以便将dir命令重定向到我的桌面,它运行得很好。
答案 1 :(得分:0)
从C#调用时我也遇到过这个问题。我经常使用的解决方法是物理上允许它在运行命令时显示窗口。不知道为什么这会有所不同,但它在过去对我有用。