kingprageeth Posted September 13, 2007 Posted September 13, 2007 I am writing bat files. I want my program to identify the letter of the USB flash drive which connected to the machine. Does anybody know how to do that?
kingprageeth Posted September 19, 2007 Author Posted September 19, 2007 Ooooh friends......, atleast tel me a way to identify the letters of all the drive partitions (with usb drive) in my machine.
jamieo Posted September 19, 2007 Posted September 19, 2007 Not to be a jerk but this isn't a vLite question so you shouldn't expect any replies. If you searched in the XP unattended forum (Vista is more XML) then you should have found your answer which will be something like...set tagfile=something.txtfor %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist "%%i:\%tagfile%" set keydrv=%%i
kingprageeth Posted September 24, 2007 Author Posted September 24, 2007 (edited) :angry: Edited September 24, 2007 by kingprageeth
Kelsenellenelvian Posted September 24, 2007 Posted September 24, 2007 Moving to unnatended forum.Also isn't the USB drive letter commonly the first available free drive letter?
IcemanND Posted September 24, 2007 Posted September 24, 2007 Are you running the BAT/CMD file from the USB drive so you need to know the letter the BAT is on?
GTOOOOOH Posted September 24, 2007 Posted September 24, 2007 I do this now with AutoIT. Does the drive have a specific file/folder structure on it? If so, this is REALLY easy, and I can write you the code (as I've already written it for my own USB key(s)).
kingprageeth Posted September 25, 2007 Author Posted September 25, 2007 GTOOOOOH, please tell me your method. That may be useful for me.
PsiMoon314 Posted September 25, 2007 Posted September 25, 2007 Hi,Here is a .CMD file which lists all of your drives and lists their types. USB Drives appear as a "Removable Drive".@echo offsetlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSIONset Drive_Count=0set DrivesList=for /f "skip=1 TOKENS=1*" %%i in ('fsutil fsinfo drives^|more') do (set Drive=%%iset /a Drive_Count+=1for /F "tokens=1* delims=- " %%A in ('fsutil fsinfo drivetype !Drive!^|find "-"') do ( echo Drive !Drive_Count!: [!Drive:~0,1! ] %%B set MountPoint_Count= for /F "tokens=* delims=:" %%Z in ('Mountvol^|find "!Drive:~0,1!:\"') do ( set MountPoint=%%Z if !MountPoint:~8! NEQ !Drive! ( set /a Drive_Count+=1 set /a MountPoint_Count+=1 echo MountPoint !Drive_Count!: [!MountPoint:~8,1!!MountPoint_Count!] !MountPoint:~8! set MountPoint[!Drive:~0,1!]=MountPoint_Count ) ) set Drive[!Drive:~0,1!]=%%B !MountPoint_Count! set DrivesList=!DrivesList! !Drive:~0,1!!MountPoint_Count!))rem echo Drive[q] [%Drive[q]%]echo dl: %DrivesList%echo offendlocalThis code could serve as the basis of what you might be looking for.RegardsSimon
IcemanND Posted September 25, 2007 Posted September 25, 2007 USB Drives appear as a "Removable Drive".Actually this depends upon the drive. Most thumb drives will be removable, external hard drives are not normally.
GTOOOOOH Posted September 28, 2007 Posted September 28, 2007 GTOOOOOH, please tell me your method. That may be useful for me. This should get you started.$drive = DriveGetDrive( "all" )If NOT @error Then For $i = 1 to $drive[0] If $drive[$i] = "a:" Or $drive[$i] = "b:" Or $drive[$i] = "c:" Then ContinueLoop If FileExists($drive[$i] & "\boot\boot.sdi") Then MsgBox(0,"",$drive[$i]) Exit EndIf NextEndIfMsgBox(0,"","No drives found containing ..\boot\boot.sdi")Exit
blinkdt Posted September 29, 2007 Posted September 29, 2007 (edited) Here's a variant of GTOOOOOH's script culled from the AutoIt forums that I have been using for a long time to run applications from my flash key:$usb = DriveGetDrive("REMOVABLE")If Not @error Then ;MsgBox(4096, "", "Found " & $usb[0] & " drives");‹-- uncomment to verify/identify all available drives For $i = 1 To $usb[0] If DriveGetLabel($usb[$i]) = "COR_8GB" Then Global $MyKey = $usb[$i];‹== set flash key drive letter assignment EndIf NextEndIfThe main difference is that instead of searching for a file on the key, the script searches for the key itself . . . by name. I named my key "COR_8GB." The drive letter assignment is the variable $MyKey, which can be used to run apps, like so:RunWait( $MyKey & '\myapps\nero6\install.exe')On a related note, here's a variant that I use to fire up WPI from a flash key named, of all things, "WPI:"$usb = DriveGetDrive("REMOVABLE")If Not @error Then For $i = 1 To $usb[0] If DriveGetLabel($usb[$i]) = "WPI" Then $MyKey = $usb[$i] RegWrite("HKEY_CURRENT_USER\Software\WPI", "ConfigFile", "REG_SZ", $drv & "/WPI/WPIScripts/config.js") RegWrite("HKEY_CURRENT_USER\Software\WPI", "OptionsFile", "REG_SZ", $drv & "/WPI/WPIScripts/useroptions.js") RegWrite("HKEY_CURRENT_USER\Software\WPI", "LogPath", "REG_SZ", $drv & "/WPI/INSTALL_LOG.txt") Run("mshta " & $MyKey & "\WPI\WPI.hta """) EndIf NextEndIfWith a custom autorun.inf file, I can just plug in the drive, click OK, and run WPI. Works well. Edited September 29, 2007 by blinkdt
kingprageeth Posted October 3, 2007 Author Posted October 3, 2007 Thanx everybody for helping me.(Specially to GTOOOOOH,blinkdt and PsiMoon314)
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now