Process.Start(“echo”,“%cd%”)抛出W32Exception File Not Found

时间:2011-08-22 09:35:59

标签: c# .net exception-handling process.start

当我尝试Process.Start("echo", "%cd%")时,它会引发System.ComponentModel.Win32Exception: The system cannot find the file specified。 当我在cmd中手动执行此操作时,它就像它应该的那样工作。我从来不知道有什么不同......

此外,当我执行绝对应该存在的文件File.Exists(logfile.txt)(没有路径)时,它返回false。这是上面echo的原因:调试......

我的开发机器上不会发生此错误,只会在我正在测试的另一台机器上发生。

Path变量看起来很正常。两者都是WinXP。两者都运行.NET 3.5

3 个答案:

答案 0 :(得分:10)

尝试Process.Start("cmd.exe", "/c echo %CD%")

只要echo不是可执行文件而是内部命令。

答案 1 :(得分:2)

如果要将应用程序的工作目录传递给cmd,可以使用System.Environment.CurrentDirectory。 AFAIK%CD%是cmd的内部,这就是Process.Start不会扩展它的原因。对于普通环境变量,您可以使用Environment.ExpandEnvironmentVariables

答案 2 :(得分:1)

这是因为echo是一个控制台命令,而不是一个应用程序 - 它不在自己的可执行文件中。

至于你的文件存在问题,如果你只使用没有路径的文件名,那么它将在工作目录中查找,这可能与包含正在执行的应用程序的目录不同,并且与你认为文件的位置完全不同应该是 - 在了解应用程序配置后,您应该完全确定自己的路径。