在 C# 中设置当前目录



我正在尝试更改 C# 代码中的目录,以便我可以运行批处理文件。

例如:

D:Program FilesCommon Filesasd.bat

但是,当我使用Directory.SetCurrentDirectory(@"D:Program FilesCommon Filesasd.bat");时,它会给我两个错误。

  1. 类、结构或接口成员声明中的标记"("无效 错误
  2. "System.IO.Directory.SetCurrentDirectory(string)"是一个"方法",但像"类型"一样使用

谁能帮我。我仍然是C#的新手。

老问题,但接受的答案不正确。

收到此类错误意味着未正确设置对库的引用(缺少使用或未设置对 .NET 类或 NUGET 包的依赖项)。在这种情况下,您可以在顶部声明using System.IO;,也可以通过完全限定命名空间来引用方法(就像我在下面所做的那样)。

关于您要使用的方法,还有另一个问题:

当您调用System.IO.Directory.SetCurrentDirectory(path)时,它必须是没有文件名的路径。您传递了包含文件名的完整路径asd.bat

若要获取路径,请使用System.IO.Path.GetDirectoryName,例如:

var pathWithFileName = @"D:Program FilesCommon Filesasd.bat";
var pathOnly = System.IO.Path.GetDirectoryName(pathWithFileName);
System.IO.Directory.SetCurrentDirectory(pathOnly);

字符串前面的@符号是必需的,否则将被视为转义字符,而不是目录分隔符。

如果要事先检查路径是否存在,请使用

if (System.IO.Directory.Exists(pathOnly))
System.IO.Directory.SetCurrentDirectory(pathOnly);

注意:当然,您可以通过在顶部声明using System.IO;来缩写上面的代码 - 我在这里没有这样做,因为我想展示该方法的来源。

错误一定在其他地方。也许您确实将代码直接放在类中而不是成员中?

最新更新