Наименование диска с помощью командного файла
Я ищу команду для переименования нескольких дисков, которые я сопоставляю каждый запуск в WinXP. У меня есть часть отображения, и теперь я заинтересован в том, чтобы назвать их программно с помощью пользовательских имен, чтобы я мог сохранить их прямо.
2 ответа
Решение
Я отказался от DOS и изучил PowerShell вместо этого. Конечный результат работал так:
$Net = New-Object -ComObject WScript.Network
$Rename = New-Object -ComObject Shell.Application
#### # Map the local drives
Subst Q: 'C:\File Path\Uno'
Subst U: 'C:\File Path\Dos'
#### # Map the network drives
$Net.MapNetworkDrive("X:", '\\Server\File Path\Uno')
$Net.MapNetworkDrive("Y:", '\\Different Server\File Path\Dos')
#### # Rename everything
$rename.NameSpace("Q:\").Self.Name = 'Network -> FOO'
$rename.NameSpace("U:\").Self.Name = 'Network -> BAR'
$rename.NameSpace("X:\").Self.Name = 'Local -> FOO'
$rename.NameSpace("Y:\").Self.Name = 'Local -> BAR'
В командной строке введите:
LABEL x: yourlabel
куда x:
ваша буква диска, и yourlabel
имя, которое вы хотели бы иметь.
От LABEL /?
:
Creates, changes, or deletes the volume label of a disk.
LABEL [drive:][label]
LABEL [/MP] [volume] [label]
drive: Specifies the drive letter of a drive.
label Specifies the label of the volume.
/MP Specifies that the volume should be treated as a
mount point or volume name.
volume Specifies the drive letter (followed by a colon),
mount point, or volume name. If volume name is specified,
the /MP flag is unnecessary.
Редактировать: как отметил @mark, это не работает с подключенными дисками. Кажется, это распространенная проблема, и может быть способ достичь этого через реестр, или несколько проще, используя небольшой скрипт vbs.
REM ad label to any drive
set SETl=TEMP
set SETD=B
echo strComputer = "." > LTEMP.vbs && echo Set objWMIService = GetObject("winmgmts:" _ >> LTEMP.vbs && echo + "{impersonationLevel=impersonate}!\\" + strComputer + "\root\cimv2") >> LTEMP.vbs && echo. >> LTEMP.vbs && echo Set colDrives = objWMIService.ExecQuery _ >> LTEMP.vbs && echo ("Select * from Win32_LogicalDisk where DeviceID = '%SETD%:'") >> LTEMP.vbs && echo. >> LTEMP.vbs && echo For Each objDrive in colDrives >> LTEMP.vbs && echo objDrive.VolumeName = "%SETl%" >> LTEMP.vbs && echo objDrive.Put_ >> LTEMP.vbs && echo Next >> LTEMP.vbs && cscript LTEMP.vbs && del LTEMP.vbs