Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Функция определения номера диска по букве (http://forum.oszone.net/showthread.php?t=244893)

HFShak 17-10-2012 17:46 2007270

Функция определения номера диска по букве
 
Добрый день!
Подскажите, есть ли такая функция, для определения номера диска по букве? (например: _GetNumberDrive("G:"))

apozlevich 17-10-2012 17:52 2007275

Что подразумевается под номером диска?

Creat0R 17-10-2012 18:12 2007300

Код:

$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


HFShak 18-10-2012 09:16 2007667

Цитата:

Цитата Creat0R
$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

Iska 18-10-2012 10:18 2007692

Цитата:

Цитата HFShak
Я имею ввиду номер физического диска, который показан в управление дисками...
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)


HFShak 18-10-2012 11:11 2007724

Спасибо, работает!

Creat0R 18-10-2012 15:33 2007857

Цитата:

Цитата HFShak
Данная функция не правильно показывает... »

Всё правильно показывает, нужно было изначально уточнять что требуется получить.

Цитата:

Цитата HFShak
Спасибо, работает! »

Ну это же не номер диска, это номер раздела (части).

Iska 18-10-2012 15:35 2007859

Цитата:

Цитата Creat0R
Ну это же не номер диска, это номер раздела (части). »

Там и то есть, и другое.

Creat0R 18-10-2012 15:37 2007861

В WinAPIEx есть для этого функция:

Код:

#include <WinAPIEx.au3>

$aDriveNumber = _WinAPI_GetDriveNumber('G:')

ConsoleWrite('Drive #' & $aDriveNumber[1] & @LF)
ConsoleWrite('Partition #' & $aDriveNumber[2] & @LF)


crimes 06-04-2014 20:02 2333980

Необходимо сделать загрузочную флешку,но загрузчик надо автоматизировать,для выставления загрузки необходим номер диска.
Это из cmd нужно перевести в Auto IT.
Код:

C:\Grub4dos\grubinst.exe (hd0)

где 0 - это номер диска

Задача такая на AutoIt:

Папка\
grubinst.exe
script.au3 - он же будет "exe"
script.cmd

Запуск из cmd\bat:
Код:

script.au3 G:\ - буква флешки
Как то так,но мозгов не хватает:

Сам скрипт script.au3,примерный конечно.
PHP код:

#include <WinAPIEx.au3>

$aDriveNumber _WinAPI_GetDriveNumber('G:')  - и букву нужно перенести как команду ключ.

ConsoleWrite('Drive #' $aDriveNumber[1] & @LF)
ConsoleWrite('Partition #' $aDriveNumber[2] & @LF)

Run('grubinst.exe hd$aDriveNumber[1]')      -    прописывание загрузчика,как то так



Время: 00:44.

Время: 00:44.
© OSzone.net 2001-