Sign in to follow this  
Followers 0
Vadtec

DriveGetType seemingly not working.

5 posts in this topic

I am trying to use DriveGetType to find all the removeable storage devices attach to any given computer. I am using the following code:

Func GetDrives()
; Fill the destination list
Local $drives = DriveGetDrive("ALL")
If @error == 1 Then
  MsgBox(0, "Error", "No removeable media found, cannot continue!" & @CRLF & "Please insert a micro SD card or other removeable media to copy to.", 15)
  ;GUISetState(@SW_SHOW, $mainwindow)
  GUISetState(@SW_HIDE, $cabswindow)
Else
  For $i = 1 To $drives[0]
   Local $drive = $i
   Local $type = DriveGetType($i & "\")
   If @error == 1 Then
    $type = "Error getting drive type"
   EndIf
   ConsoleWrite($drives[$i] & "\ " & $type & @CRLF)
  Next
EndIf
EndFunc   ;==>GetDrives

When I run that bit of code, I see the following in the console window:

c:\ Error getting drive type
e:\ Error getting drive type
g:\ Error getting drive type
h:\ Error getting drive type
q:\ Error getting drive type
t:\ Error getting drive type

Is DriveGetType not able to get the device type from a root directory (IE: C:\) only, or does it require a full path to find the root device?

I would think the above would work just fine, but alas, it does not seem to. Any help is greatly appreciated.

- Vadtec

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Local $type = DriveGetType($i & "")

$I is an integer, that is probably your problem. Use $drives[$i] instead ie Local $type = DriveGetType($drives[$i] & "") Edited by DicatoroftheUSA

Share this post


Link to post
Share on other sites

$I is an integer, that is probably your problem.

Well don't I feel silly. This is what happens when I try to work on 1-2 hrs of sleep in the last 72 hrs. Go figure. Thanks for the kick in the head!

- Vadtec

Share this post


Link to post
Share on other sites

I see a couple of other potential errors with the script.

This piece:

If @error == 1 Then
  MsgBox(0, "Error", "No removeable media found, cannot continue!" & @CRLF & "Please insert a micro SD card or other removeable media to copy to.", 15)

Considering you're looking for all drive types, your error message in the MsgBox doesn't make much sense. Second, you're using "==" which is a case sensitive comparison, on a number, you should be using "=" instead for numeric comparisons. Using "==" will work in this instance, but if you're not careful it can bite you in the butt later.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

LOL, I am sure most of us have made that mistake before.

Because of that I pass strings through a variable ie.

$sDrive=$aDrive[$i]&''

DriveGetType($sdrive)

consolewrite($sdrive)

I think it simplifies troubleshooting, especially if I have beer and donuts for breakfast (just kidding)

Edited by DicatoroftheUSA

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0