用于将Windows短路径转换为长路径的Ruby方法?

时间:2016-01-21 09:09:11

标签: ruby windows path

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}

1 个答案:

答案 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"