Я написал скрипт AutoHotkey .
Обратите внимание, что AutoHotkey должен быть запущен от имени администратора для этой работы.
Чтобы использовать это, выберите диск в проводнике Windows следующим образом:
А затем нажмите ALT+L.
Это загрузит раздел диска с выбранным томом и будет ждать ввода новой буквы диска:
Теперь просто введите новую букву диска и нажмите 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