'Based upon CD location/letter/partition creation script at 'http://www.msfn.org/board/index.php?showtopic=60721&st=20 'Posted by (author?) Tracy7011 Dec 4 2005, 10:37 AM 'This script will: '1. find your cd-rom drive letter. '2. find the disk id of your hard disk '3. create a diskpart txt script file to a. remove the cd-rom/zip/partition drive letter, b. reassign letters '4. Creates a batch file that launches diskpart with the above script file ' you can never know if windows will call the hard disk disk 1 or disk 0. '************************DoDrives.vbs********************* Option Explicit 'Declared DIM txtFile, objFSO, objWMIService, objShell, objDisk, wmiServices, wmiDiskDrives, wmiDiskDrive DIM wmiDiskPartitions, wmiDiskPartition, wmiLogicalDisks, wmiLogicalDisk, colDisks DIM diskpartPath, workingPath, UserDriveLabel, batFileName, txtFileName, logFileName, NewBat, NewFile DIM ComputerName, strComputer, DefaultString DIM DiskNum, CDVolLetter, ZipVolLetter, BootVolLetter, UserVolLetter, thrInVolLetter DIM targetCDltr, targetZipltr, targetUserltr Const FOR_READING = 1, FOR_WRITING = 2 'Init ComputerName = "." strComputer = "." diskpartPath = "%windir%\system32\diskpart.exe /S" workingPath = "C:\ImageTools\" batFileName = "rsbat" txtFileName = "rstxt" logFileName = "rslog" UserDriveLabel = "User Drive" targetZipltr = "b" targetUserltr = "u" targetCDltr = "d" DefaultString = Array ("select volume ", "remove noerr", "assign letter ", "select disk ", _ "Create partition primary", "exit") NewFile = workingPath & txtFileName & ".txt" 'create a .txt script file for diskpart NewBat = workingPath & batFileName & ".bat" 'use batch file to launch format after diskpart completes Set objFSO = CreateObject("Scripting.FileSystemObject") Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk") 'This simply gets drive letters of currently assigned drives For Each objDisk in colDisks ' wscript.echo objDisk.DriveType ' wscript.echo objDisk.Description ' wscript.echo objDisk.VolumeName Select Case objDisk.DriveType Case 0 'Unknown Case 1 'No Root Directory Case 2 'Removable Disk If objDisk.Description = "3 1/2 Inch Floppy Drive" Then thrInVolLetter = objDisk.DeviceID Else ZipVolLetter = objDisk.DeviceID End If Case 3 'Local Disk If objDisk.VolumeName = UserDriveLabel Then UserVolLetter = objDisk.DeviceID Else BootVolLetter = objDisk.DeviceID End If Case 4 'Network Drive Case 5 'Compact Disc CDVolLetter = objDisk.DeviceID Case 6 'RAM Disk Case Else End Select Next wscript.echo " 3.5: " & thrInVolLetter wscript.echo "Boot: " & BootVolLetter wscript.echo " Zip: " & ZipVolLetter & " => " & targetZipltr wscript.echo "User: " & UserVolLetter & " => " & targetUserltr wscript.echo " CD: " & CDVolLetter & " => " & targetCDltr ' Write out script txt file for diskpart Set txtFile=objfso.CreateTextFile(NewFile, True) 'Create a new script text file If ZipVolLetter = "" Then wscript.echo "No Zip Drive Found" Else txtFile.WriteLine (DefaultString(0)) & ZipVolLetter 'select volume x: (x = Zip Drive Letter) txtFile.WriteLine (DefaultString(1)) 'remove noerr txtFile.WriteLine (DefaultString(2)) & targetZipltr 'assign Zip letter x End If If UserVolLetter = "" Then wscript.echo "No User Drive Found" Else txtFile.WriteLine (DefaultString(0)) & UserVolLetter 'select volume x: (x = User Drive Letter) txtFile.WriteLine (DefaultString(1)) 'remove noerr txtFile.WriteLine (DefaultString(2)) & targetUserltr 'assign User letter x End If If CDVolLetter = "" Then wscript.echo "No CD Drive Found" Else txtFile.WriteLine (DefaultString(0)) & CDVolLetter 'select volume x: (x = CD Drive Letter) txtFile.WriteLine (DefaultString(1)) 'remove noerr txtFile.WriteLine (DefaultString(2)) & targetCDltr 'assign CD letter x End If txtFile.WriteLine (DefaultString(5)) 'exit txtFile.close 'Close the new file ' Create batch file to encapsulate diskpart - to be able to format immediatly afterward Set txtFile=objfso.CreateTextFile(NewBat, True) 'Create a new batch file txtFile.WriteLine diskpartPath & " " & workingPath & txtFileName & ".txt > " & workingPath & logFileName & ".txt" 'This line launches diskpart txtFile.WriteLine "exit" 'exit txtFile.close 'Close the new file Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run("%comspec% /K " & workingPath & batFilename & ".bat"), 1, true 'Run the bat file objFSO.DeleteFile(workingPath & batFileName & ".bat"), true 'deletes bat (cleanup)