From: Michael Brooks Date: 2008-04-27T11:40:08+09:00 Subject: Re: Free disk space with VMI in megabyte Toki Toki wrote: > Hi all! > > I'm new to ruby, I've found this pretty neat code linked on a thread on > this forum, original post was at: > http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/95197 > > require 'win32ole' > > wmi = WIN32OLE.connect("winmgmts://./root/cimv2") > disk = wmi.ExecQuery("Select * from Win32_LogicalDisk") > disk.each {|drive| puts "#{drive.DeviceID} #{drive.FreeSpace}"} > > Now, the code work very well, but I can't convert the free space in MB > or any other unit, how can I convert it? > > Thanks. > > Best regards. Hello Toki: The drive.FreeSpace is being returned as a string (which may also be a nil). Change #{drive.FreeSpace} to #{drive.FreeSpace.class} to see what I mean. You'll need to convert the FreeSpace to a number before you can use math operators / functions with it. Below is an example of how to do that with the #to_f (aka "to float") method: disk.each {|drive| puts "#{drive.DeviceID} #{(drive.FreeSpace.to_f / 1024) / 1024}"} Hope that helps, Michael