批处理工作正常,但" windows找不到devcon.exe"在c#程序中

时间:2016-08-17 07:09:25

标签: c# batch-file

我有一个批处理文件,可以使用https://aws.amazon.com/cloudfront/webinars/禁用和启用某些驱动程序。 当我通过双击它来运行这个批处理文件时它工作正常。 但是,我尝试使用这一行编写的C#程序运行它:

scatterplot3d(x=sleep$ID, y=sleep$extra, z=sleep$group, lab.z = c(1, 2))

它运行正常,直到它尝试打开devcon.exe,我收到以下消息: windows devcon

之后继续顺利运行。

为什么它不能在C#程序中运行?

P.S 由于IP问题,我无法发布批处理代码......

2 个答案:

答案 0 :(得分:2)

问题是 - 经常 - "工作目录"。当您在资源管理器中双击某些内容时,工作目录将设置为当前文件夹,因此从批处理文件的角度来看,它的当前目录是它自己的目录。

执行C#应用程序时,通常工作目录是应用程序的exe文件的目录,但不一定(例如,如果使用链接运行应用程序,则可以指定其他工作目录) 。这就是为什么要查找应用程序EXE文件的目录,不能保存使用GetCurrentDirectory

所以会发生的情况是应用程序运行批处理文件,但是使用应用程序的目录,而不是批处理文件的目录,作为工作目录。批处理文件中显式cd的替代方法是在调用Process.Start时指定工作目录。

答案 1 :(得分:0)

好的,经过一些研究后我发现了这个简单的解决方案: 只需在批处理代码的开头更改为devcon.exe的目录(使用cd命令),即:

cd "C:/*path to the directory of devcon.exe*"
#rest of the code