我发现这可行,并添加了关闭和重新启动资源管理器以反映驱动器更改。
我无法对其进行调整以允许按驱动器号而不是驱动器描述进行搜索。
我需要更改驱动器号的原因是闪存介质中的电子表格需要锁定到特定的锁定目录,用户错误要低得多。
这是一个较大批处理文件的一小部分,它在允许访问其中的文件夹之前检查当前驱动器的正确字母分配。
:Change_Letter
cls
@echo ON
setlocal
echo Type The Name Of The Drive NOT The Letter!
set /p Label=
set Drive=W
set Confirm=1
set Volume=
set VolumesFile=%Temp%\Volumes.txt
set DiskPartFile=%Temp%\DiskPart.txt
echo Retrieving volume information ...
echo list volume | diskpart.exe | more +5 | find /v "DISKPART>" >"%VolumesFile%"
for /f "tokens=2" %%a in ('type "%VolumesFile%" ^| find /i "%Label%"') do (set Volume=%%a)
if "%Volume%"=="" (
echo No volume with the label '%Label%' found; existing volumes:
type "%VolumesFile%"
goto Leave
)
>%DiskPartFile% echo select volume %Volume%
>>%DiskPartFile% echo assign letter %Drive%
>>%DiskPartFile% echo exit
if "%Confirm%" equ "0" goto AssignLetter
echo.
echo The following volumes were found:
type "%VolumesFile%"
echo 'Volume %Volume%' will be assigned the drive letter '%Drive%'.
echo The following diskpart script will be executed:
type "%DiskPartFile%"
echo.
set Response=N
set /p "Response=Continue [y/N]? "
if /i not "%Response%"=="Y" (
echo Operation canceled.
goto Leave
)
:AssignLetter
echo Setting drive letter '%Drive%' for volume %Volume% ...
diskpart.exe /s "%DiskPartFile%"
echo Done.
:Leave
cls
CD\
Timeout /T 5
taskkill /f /im explorer.exe
Timeout /T 3
cls
CD\
start explorer.exe
if exist "%VolumesFile%" del "%VolumesFile%"
if exist "%DiskPartFile%" del "%DiskPartFile%"
Label W: LoganHayLLC
Timeout /T 4
Start W:\FileAccess.bat
exit