Показать полную графическую версию : [решено] Функция определения номера диска по букве
Добрый день!
Подскажите, есть ли такая функция, для определения номера диска по букве? (например: _GetNumberDrive("G:"))
apozlevich
17-10-2012, 17:52
Что подразумевается под номером диска?
$iDriveNum = _DriveGetNum('G:')
ConsoleWrite (http://autoit-script.ru/autoit3_docs/functions/ConsoleWrite.htm)($iDriveNum & @LF (http://autoit-script.ru/autoit3_docs/macros.htm#@lf))
Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _DriveGetNum($sDrive, $sType = 'FIXED')
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $aDrives = DriveGetDrive (http://autoit-script.ru/autoit3_docs/functions/DriveGetDrive.htm)($sType)
$sDrive = StringRegExpReplace (http://autoit-script.ru/autoit3_docs/functions/StringRegExpReplace.htm)($sDrive, '\\+$', '')
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $aDrives[0]
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $aDrives[$i] = $sDrive Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) $i
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) SetError (http://autoit-script.ru/autoit3_docs/functions/SetError.htm)(1, 0, 0)
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)
$iDriveNum = _DriveGetNum('G:')
ConsoleWrite($iDriveNum & @LF)
Func _DriveGetNum($sDrive, $sType = 'FIXED')
Local $aDrives = DriveGetDrive($sType)
$sDrive = StringRegExpReplace($sDrive, '\\+$', '')
For $i = 1 To $aDrives[0]
If $aDrives[$i] = $sDrive Then
Return $i
EndIf
Next
Return SetError(1, 0, 0)
EndFunc »
Данная функция не правильно показывает...
Я имею ввиду номер физического диска, который показан в управление дисками...
wmic path win32_logicaldisktopartition get antecedent,dependent
Я имею ввиду номер физического диска, который показан в управление дисками...
wmic path win32_logicaldisktopartition get antecedent,dependent »
Пробуйте:
AutoItSetOption("MustDeclareVars", 1)
Local $sComputer = "."
Local $oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator")
Local $oSWbemServicesEx = $oSWbemLocator.ConnectServer($sComputer, "root\cimv2")
Local $oSWbemObjectEx_Win32_LogicalDisk = $oSWbemServicesEx.Get("Win32_LogicalDisk.DeviceID='G:'")
Local $oSWbemObjectEx_Win32_DiskPartition
Local $oSWbemObjectEx_Win32_DiskDrive
For $oSWbemObjectEx_Win32_DiskPartition In $oSWbemObjectEx_Win32_LogicalDisk.Associators_("", "Win32_DiskPartition")
ConsoleWrite($oSWbemObjectEx_Win32_DiskPartition.DeviceID & " [" & String($oSWbemObjectEx_Win32_DiskPartition.DiskIndex) & "]" & @CRLF)
For $oSWbemObjectEx_Win32_DiskDrive In $oSWbemObjectEx_Win32_DiskPartition.Associators_("", "Win32_DiskDrive")
ConsoleWrite(@TAB & $oSWbemObjectEx_Win32_DiskDrive.DeviceID & " [" & String($oSWbemObjectEx_Win32_DiskDrive.Index) & "]" & @CRLF)
Next
Next
$oSWbemObjectEx_Win32_DiskDrive = 0
$oSWbemObjectEx_Win32_DiskPartition = 0
$oSWbemObjectEx_Win32_LogicalDisk = 0
$oSWbemServicesEx = 0
$oSWbemLocator = 0
Exit(0)
Данная функция не правильно показывает... »
Всё правильно показывает, нужно было изначально уточнять что требуется получить.
Спасибо, работает! »
Ну это же не номер диска, это номер раздела (части).
Ну это же не номер диска, это номер раздела (части). »
Там и то есть, и другое.
В WinAPIEx (http://autoit-script.ru/index.php/topic,47.0.html) есть для этого функция:
#include (http://autoit-script.ru/autoit3_docs/keywords.htm##include) <WinAPIEx.au3>
$aDriveNumber = _WinAPI_GetDriveNumber('G:')
ConsoleWrite (http://autoit-script.ru/autoit3_docs/functions/ConsoleWrite.htm)('Drive #' & $aDriveNumber[1] & @LF (http://autoit-script.ru/autoit3_docs/macros.htm#@lf))
ConsoleWrite (http://autoit-script.ru/autoit3_docs/functions/ConsoleWrite.htm)('Partition #' & $aDriveNumber[2] & @LF (http://autoit-script.ru/autoit3_docs/macros.htm#@lf))
Необходимо сделать загрузочную флешку,но загрузчик надо автоматизировать,для выставления загрузки необходим номер диска.
Это из cmd нужно перевести в Auto IT.
C:\Grub4dos\grubinst.exe (hd0)
где 0 - это номер дискаЗадача такая на AutoIt:
Папка\
grubinst.exe
script.au3 - он же будет "exe"
script.cmd
Запуск из cmd\bat:
script.au3 G:\ - буква флешки Как то так,но мозгов не хватает:
Сам скрипт script.au3,примерный конечно.
#include <WinAPIEx.au3>
$aDriveNumber = _WinAPI_GetDriveNumber('G:') - и букву нужно перенести как команду ключ.
ConsoleWrite('Drive #' & $aDriveNumber[1] & @LF)
ConsoleWrite('Partition #' & $aDriveNumber[2] & @LF)
Run('grubinst.exe hd$aDriveNumber[1]') - прописывание загрузчика,как то так.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.