From: Alfonso Date: 2006-11-22T08:10:45+09:00 Subject: Re: getting volume names in windows Jan Svitok escribi�: > On 11/21/06, Alfonso wrote: >> Jan Svitok escribi�: >> > On 11/20/06, Alfonso wrote: >> >> Does anyone knows how can you get the volume name of a drive in >> windows? >> >> I'm writting a program that should get the name of the cd or dvd >> >> inserted in the drive. The user selects a directory using a gtk >> dialog >> >> (filechooser), and then I have the path of the folder; but when you >> >> select a cd/dvd, you get only the letter of the drive (E:\, D:\,...). >> >> >> >> I have tried also File.dirname(name_of_a_file_in_the_dvd). It doesn't >> >> give you the cd/dvd name... >> >> >> >> Thank's in advance >> > >> > I guess there's some WINAPI (use WIN32API) for that, or WScript (COM >> > -> use WIN32OLE) or WMI (COM). Just google a bit (and see Programming >> > Ruby how to use those libs). >> > >> > >> Thank you very much for the idea, I'm going to have a look at that >> win32ole > > try: > > Listing 4.3 Enumerating Disk Drive Properties > > 1. Set objFSO = CreateObject("Scripting.FileSystemObject") > 2. Set colDrives = objFSO.Drives > 3. For Each objDrive in colDrives > 4. Wscript.Echo "Available space: " & objDrive.AvailableSpace > 5. Wscript.Echo "Drive letter: " & objDrive.DriveLetter > 6. Wscript.Echo "Drive type: " & objDrive.DriveType > 7. Wscript.Echo "File system: " & objDrive.FileSystem > 8. Wscript.Echo "Is ready: " & objDrive.IsReady > 9. Wscript.Echo "Path: " & objDrive.Path > 10. Wscript.Echo "Root folder: " & objDrive.RootFolder > 11. Wscript.Echo "Serial number: " & objDrive.SerialNumber > 12. Wscript.Echo "Share name: " & objDrive.ShareName > 13. Wscript.Echo "Total size: " & objDrive.TotalSize > 14. Wscript.Echo "Volume name: " & objDrive.VolumeName > 15. Next > > When the script in Listing 4.3 runs under CScript, information similar > to the following appears in the command window: > > Available space: 10234975744 > Drive letter: C > Drive type: 2 > File system: NTFS > Free space: 10234975744 > Is ready: True > Path: C: > Root folder: C:\ > Serial number: 1343555846 > Share name: > Total size: 20398661632 > Volume name: Hard Drive > > from: > http://discuss.develop.com/archives/wa.exe?A2=ind0511d&L=dotnet-winforms&T=0&F=&S=&P=2611 > > > That would be in ruby: > > require 'win32ole' > > file_system = WIN32OLE.new("Scripting.FileSystemObject") > drives = file_system.Drives > drives.each do |drive| > puts "Available space: #{drive.AvailableSpace}" > puts "Drive letter: #{drive.DriveLetter}" > puts "Drive type: #{drive.DriveType}" > puts "File system: #{drive.FileSystem}" > puts "Is ready: #{drive.IsReady}" > puts "Path: #{drive.Path}" > puts "Root folder: #{drive.RootFolder}" > puts "Serial number: #{drive.SerialNumber}" > puts "Share name: #{drive.ShareName}" > puts "Total size: #{drive.TotalSize}" > puts "Volume name: #{drive.VolumeName}" > end > > (beware, not tested code so errors can be there!) > > That's great! Thank's a lot! I see why there is so many people switching to ruby: the incredible comunity :-) ______________________________________________ LLama Gratis a cualquier PC del Mundo. Llamadas a fijos y m�viles desde 1 c�ntimo por minuto. http://es.voice.yahoo.com