Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

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?

Replies are listed 'Best First'.
(tye)Re: List of Mounted Drives on Win32
by tye (Sage) 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.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://48386]
Approved by root
and not a whimper to be heard...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (5)
As of 2017-12-17 05:33 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (462 votes). Check out past polls.