当我尝试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
答案 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
是一个控制台命令,而不是一个应用程序 - 它不在自己的可执行文件中。
至于你的文件存在问题,如果你只使用没有路径的文件名,那么它将在工作目录中查找,这可能与包含正在执行的应用程序的目录不同,并且与你认为文件的位置完全不同应该是 - 在了解应用程序配置后,您应该完全确定自己的路径。