2

Обычно это делается с помощью управления дисками, но, похоже, должен быть способ сделать это непосредственно в проводнике Windows. Это может быть полезно, если вы работаете с большим количеством флэш-памяти или внешних дисков.

Хотя я понимаю, что нет нативного решения, я надеялся, что может быть простой способ сделать это непосредственно в интерфейсе проводника Windows. Я подумал, что, может быть, кто-то еще написал инструмент, или сценарий с автоключем, или другой тип сценария.

2 ответа2

1

В Windows Explorer нет способа.

Вы можете сделать это через командную строку, используя diskpart.

1

Я написал скрипт AutoHotkey .

Обратите внимание, что AutoHotkey должен быть запущен от имени администратора для этой работы.

Чтобы использовать это, выберите диск в проводнике Windows следующим образом:

Выбор диска Explorer

А затем нажмите ALT+L.

Это загрузит раздел диска с выбранным томом и будет ждать ввода новой буквы диска:

DiskPart

Теперь просто введите новую букву диска и нажмите Enter.

Скрипт не выполняет никакого обнаружения ошибок, поэтому используйте его на свой страх и риск.
Этот сценарий не обнаруживает подключенные сетевые диски и пытается изменить их, как если бы они были локальными.
Кроме того, невозможно отменить скрипт после его запуска. Чтобы отменить его, просто нажмите Escape, а затем Enter.

Вы можете выбрать любой файл на целевом томе, и он все равно будет работать.

Вот сценарий:

; Retrieved from
; http://www.autohotkey.com/board/topic/100983-how-can-we-retrieve-the-name-of-a-file-selected/
Explorer_GetSelection(hwnd="")
{
  hwnd := hwnd ? hwnd : WinExist("A")
  WinGetClass class, ahk_id %hwnd%
  if (class="CabinetWClass" or class="ExploreWClass" or class="Progman")
    for window in ComObjCreate("Shell.Application").Windows
      if (window.hwnd==hwnd)
        sel := window.Document.SelectedItems
        for item in sel
        ToReturn .= item.path "`n"
        return Trim(ToReturn,"`n")
}

#IfWinActive ahk_class CabinetWClass
!l::
currentLetter:=SubStr(Explorer_GetSelection(), 1, 1)
if RegExMatch(currentLetter, "i)[a-z]") == 0
  Return
Run, diskpart
Sleep 2000 ; Wait 2 seconds
Send, SELECT VOLUME %currentLetter%{enter}
Sleep 2500
Send, REM Please enter the new drive letter and press Enter{enter}
Send, ASSIGN LETTER=
Input, newDriveLetter, I V, {enter}
Send, {enter}
Send, EXIT{enter}
Return
#IfWinActive

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .