我经常在我的脚本中使用长路径,因为我在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-红宝石。但是,另一个问题更窄。 –