Windows路径转换

时间:2018-11-26 09:20:16

标签: c# .net .net-3.5

我想将"C:\Program Files\x\y\z"转换为"C:\%ProgramFiles%\x\y\z"C:\Progra~1\x\y\z"(DOS短路径)。如何执行此C#.Net?

要将长路径转换为DOS短路径,我尝试了解决方法posted here,但在Windows 10上却无法正常工作。有提示吗?

更新-请注意,磁盘上的路径可能存在也可能不存在。我正在寻找一种可以将任意路径字符串转换为上述格式的解决方案。仅当LongPath实际存在于磁盘上时,使用GetShortPathName(...)的解决方案才有效。

1 个答案:

答案 0 :(得分:2)

如果您在应用程序中输入了一个字符串,例如“ c:\ program files \ x \ y \ z”,而您知道这是错误的位置,但是不知道正确的位置,那么您将必须假设c:\program files的意思是“程序文件文件夹”,并根据您声明的Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)的结果执行字符串替换

var wrongPath = @"c:\program files\x\y\z";
var actualPath = wrongpath.Replace(
  @"c:\program files", 
  Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
);

要转换为短路径,请尝试以下操作:Method to convert a long path name to a short path returns a null