我想将"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(...)的解决方案才有效。
答案 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