我經常在我的腳本中使用長路徑,因爲我在Windows上,我必須將這些長路徑轉換爲nix樣式,而不是反斜槓。沒有困難,但煩人,如果此後你複製該路徑去該文件夾,因爲在資源管理器中,你必須再次做相反的事情。Ruby:windows路徑轉換
所以我做了一個功能,做轉換,現在我可以使用windowspaths,我可以複製,並保持紅寶石sattisfied。
問題:這裏有更優雅的解決方案嗎?我不喜歡第二個gsub在開始時處理雙「\」,並且還想在最後處理「\」(目前不可能)。該功能應該能夠處理網絡UNC的(\ ..)和本地drivepaths(C:..)
class String
def path
self.gsub('\\','/').gsub(/^\//,'//')
end
end
path = '\\server\share\folder'.path
Dir.glob(path+'**/*') do |file|
puts file
end
#=>
#//server/share/folder/file1.txt
#//server/share/folder/file2.txt
我想看看路徑名(http://www.ruby-doc.org/stdlib-1.9.3/libdoc/pathname/rdoc/Pathname.html),或至少文件#加入(HTTP: //www.ruby-doc.org/core-1.9.3/File.html#method-c-join)而不是手動執行此操作。 –
thnx邁克爾,路徑名似乎很有趣,但我不明白它是如何幫助我做到這一點,你可以給一個答案的例子嗎?如果我使用File.join我比以前更遠離家,那肯定不會在exeplorer中複製 – peter
http://stackoverflow.com/questions/4862192/convert-windows-path-to-unc-in-紅寶石。但是,另一個問題更窄。 –