6

当我尝试这样做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

4

3 回答 3

12

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

至于 echo 不是可执行文件,而是里面的命令。

于 2011-08-22T09:38:34.750 回答
2

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

于 2011-08-22T09:41:38.180 回答
1

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

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

于 2011-08-22T09:40:42.097 回答