2013-05-21 7 views
0

Хотите изменить букву томов. после запуска скрипта он должен отображать разделы во всплывающем окне и запрашивать новые буквы дисков.vbscript для изменения буквы диска

Используется ниже код, но это просто изменение д в д

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 

Set colVolumes = objWMIService.ExecQuery _ 
("Select * from Win32_Volume Where Name = 'D:\\'") 

For Each objVolume in colVolumes 
objVolume.DriveLetter = "Q:" 
objVolume.Put_ 
Next  
+0

Просьба предоставить более подробную информацию. Мне непонятно, чего вы на самом деле хотите достичь. Вы хотите назначить буквы дисков для размонтированных томов? –

+0

Я хочу иметь три буквы диска, которые «c» «d» «v» и dvd привод «e». поэтому для каждой системы я должен изменить вручную в опции управления. Поэтому я хочу достичь этого в скрипте, когда я запускаю скрипт, поле должно открывать и показывать разделы и запрашивать новую букву диска. Например ... Раздел 1 150gb = введите новую букву .... partition 2 1tb = введите новую букву. – user2365321

+0

Я до сих пор не понимаю. Если вы хотите интерактивно менять буквы дисков, вы можете просто сделать это с помощью 'diskmgmt.msc'. –

ответ

0

Не совсем 5 лет опоздал на вечеринку. Вот удобный сценарий, который я написал с использованием сценария выше, который первоначально был из https://gallery.technet.microsoft.com/scriptcenter/ccae4d09-1bee-4f10-8c8c-176a53a65238

Я подключаю USB-накопители часто и часто, и у меня есть несколько устройств, которые мне нравятся «навсегда», назначенные конкретным буквам диска , Сохраните этот код в текстовом файле и переименуйте его в: ChangeDriveLetter.vbs

Поместите файл где-нибудь на свой компьютер, а затем создайте ярлык для него на рабочем столе или в любом месте. Затем щелкните правой кнопкой мыши ярлык и укажите комбинацию клавиш, которую вы хотели бы использовать, чтобы открыть ее в любое время, когда вы хотите изменить букву диска или два.

Это работает на Windows 10

' Elevate the script to run As Administrator 

If Not WScript.Arguments.Named.Exists("elevate") Then 
    CreateObject("Shell.Application").ShellExecute WScript.FullName _ 
    , """" & WScript.ScriptFullName & """ /elevate", "", "runas", 1 
    WScript.Quit 
End If 

' Ask the user which drive to change, and what to change it to. 
Sub subAskUser() 

    strSourceDrive = InputBox("What Drive to Reassign","Enter the drive letter to reassign:","D") 

    If ((strSourceDrive = vbCancel) Or (strSourceDrive = "") Or IsEmpty(strSourceDrive)) Then 

     WScript.Quit 

    End If 

    strTargetDrive = InputBox("What Letter to Assign","Enter the new drive letter:","Q") 

    If ((strTargetDrive = vbCancel) Or (strTargetDrive = "") Or IsEmpty(strTargetDrive)) Then 

     WScript.Quit 

    End If 

    'If The letters are present and the user did not cancel, then call the Subroutine to change the letters 
    subChangeLetter strSourceDrive, strTargetDrive 

End Sub 

subAskUser() 

Sub subChangeLetter(strSourceDrive, strTargetDrive) 

    'Check that the C: drive is not the letter that the user is trying to change from or to. 
    If ((strSourceDrive <> "C") And (strSourceDrive <> "c") And (strTargetDrive <> "C") And (strTargetDrive <> "c")) Then 

      'Uncomment the next lines to see the values entered from the InputBox 
      'MsgBox strSourceDrive 
      'MsgBox strTargetDrive 

      strComputer = "." 
      Set objWMIService = GetObject("winmgmts:" _ 
      & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 

      Set colVolumes = objWMIService.ExecQuery _ 
      ("Select * from Win32_Volume Where Name = '"& UCase(strSourceDrive) & ":\\'") 

      For Each objVolume in colVolumes 
      objVolume.DriveLetter = UCase(strTargetDrive) & ":" 
      objVolume.Put_ 
      Next 

    Else 

     MsgBox "Ah, ah, ah! You can't change the C: drive, dude!",16 

    End If 

End Sub 

strGoAgain = MsgBox("Change another drive letter?",4) 

If strGoAgain = vbYes Then 

    subAskUser() 

End If 

WScript.Quit 
Смежные вопросы