Ruby中是否有内置方法来转换像
这样的Windows短路径C:\PROGRA~2\MICROS~1.0\VC\bin\amd64
进入相应的长路径
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64
我试过
File.expand_path(short_path)
Pathname.new(short_path).cleanpath
Pathname.new(short_path).realpath
Dir.chdir(short_path) { Dir.pwd }
但这些都没有奏效。
如果可能的话,我想避免像this answer中那样直接调用Win32 API,或者像生成PowerShell那样丑陋的解决方法:
%x{powershell (Get-Item -LiteralPath #{short_path}).FullName}
答案 0 :(得分:3)
以下是一种可行的解决方法:
path=Dir.mktmpdir('vendor')
=> "C:/Users/ADMINI~1/AppData/Local/Temp/1/vendor20160727-12668-ywfjol"
Dir.glob(path)[0]
=> "C:/Users/Administrator/AppData/Local/Temp/1/vendor20160727-12668-ywfjol"