Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

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 all is quiet...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (4)
As of 2017-09-24 15:13 GMT
Find Nodes?
    Voting Booth?
    During the recent solar eclipse, I:

    Results (274 votes). Check out past polls.