September 13, 200718 yr 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?
September 19, 200718 yr Author Ooooh friends......, atleast tel me a way to identify the letters of all the drive partitions (with usb drive) in my machine.
September 19, 200718 yr 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
September 24, 200718 yr Moving to unnatended forum.Also isn't the USB drive letter commonly the first available free drive letter?
September 24, 200718 yr Are you running the BAT/CMD file from the USB drive so you need to know the letter the BAT is on?
September 24, 200718 yr 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)).
September 25, 200718 yr 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
September 25, 200718 yr 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.
September 28, 200718 yr 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
September 29, 200718 yr 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, 200718 yr by blinkdt
October 3, 200718 yr Author Thanx everybody for helping me.(Specially to GTOOOOOH,blinkdt and PsiMoon314)
Create an account or sign in to comment