Process.Start( "echo" , "%cd%" ) 抛出 W32找不到异常文件



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

另外,当我执行File.Exists(logfile.txt) (w/o路径)时,它返回false,该文件肯定应该在那里。这就是上面echo的原因:

这个错误没有发生在我的开发机器上,只发生在我正在测试的另一台机器上。

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

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

到目前为止,echo不是一个可执行文件,而是一个命令。

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

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

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

最新更新