Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

List of Mounted Drives on Win32

by Anonymous Monk
on Dec 27, 2000 at 09:28 UTC ( #48386=perlquestion: print w/ replies, xml ) Need Help??
Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

How do I get the list of mounted drives, and their labels, on a Win32 system?

Comment on List of Mounted Drives on Win32
(tye)Re: List of Mounted Drives on Win32
by tye (Cardinal) on Dec 27, 2000 at 10:34 UTC

    Recent versions of ActivePerl should include Win32API::File which knows how to find all mounted drives and can look up information about drives. It even comes with documentation.

    If you have problems with it, let us know. I can probably even whip up a 10-line script to do that for you tomorrow when I'm not rushing to bed. (:

    Well, my file copy is taking a while, so here goes:

    #!/usr/bin/perl -w use strict; use Win32API::File qw( getLogicalDrives GetVolumeInformation ); my @drives= getLogicalDrives(); foreach my $d ( @drives ) { my @x= (undef)x7; GetVolumeInformation( $d, @x ); print "$d $x[0] ($x[5])\n"; }
    Well, it isn't long on comments and I probably shouldn't recommend calling GetVolumeInformation() that way, but it mostly works for me.

            - tye (but my friends call me "Tye")
Re: List of Mounted Drives on Win32
by lolindrath (Scribe) on Dec 27, 2000 at 10:49 UTC
    Ok, I looked up some stuff and I found out that Win32::AdminMisc will do what you want if you have a WinNT system. Here's an example(Not tested).
    #!/usr/bin/perl -w use Win32::AdminMisc; my $drives = GetDrives( DRIVE_FIXED ); print $drives . "\n";

    The drive types are:
    DRIVE_FIXED - hard drive DRIVE_REMOVABLE - floppy DRIVE_REMOTE - network drive DRIVE_CDROM - cdrom DRIVE_RAMDISK - emulated drive in memory
    Some other functions that might help are:
    GetDriveType( DRIVE ) - returns the drives type GetDriveSpace ( DRIVE ) - returns the drives space GetVolumeInfo ( DRIVE ) - returns hash of drive info Element Desc ------------------ Volume Volume Label Serial Serial number of drive

    I tried this script after installing Win32::AdminMisc and it told me I needed WinNT. So I wrote this one.
    #!/usr/bin/perl -w for( my $i='a'; $i lt 'z'; $i++ ) { if ( -e "$i:/" ) { print "Drive $i exists\n"; } }

    This works under Win98 but it didn't pick up the A: drive because it didn't have any media in it. It also delayed while seeing if the A: drive had something in it. I also don't know how to find the volume label.
    I'm hoping you're on a WinNT system, then you're set.

    --=Lolindrath=--

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://48386]
Approved by root
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (12)
As of 2014-08-21 09:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (129 votes), past polls