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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   скрипт извлечения всех виртуальных приводов оптических дисков (http://forum.oszone.net/showthread.php?t=317316)

remderbauer 29-07-2016 23:53 2655436

скрипт извлечения всех виртуальных приводов оптических дисков
 
Добрый день. Прошу помощи. Нужен скрипт в автозагрузку, чтобы при запуске Виндовс 7 все виртуальные приводы извлекались (в контекстном меню привода есть команда "Извлечь"). Спасибо заранее

MKN 30-07-2016 11:21 2655488

Цитата:

Цитата remderbauer
чтобы при запуске Виндовс 7 все виртуальные приводы извлекались »

В смысле, размонтировались ?
Тогда можно: mountvol X: /d
X - буква виртуального привода (UltraISO_шные вирт привода размонтируются нормально)
Если буквы заранее известны, то всё просто, если всегда разные, надо подумать...

Как DOS-командно перечислить все буквы только вирт приводов, не знаю. Наверное придётся wmic использовать и извлекать нужную инфу...
Типа такого :
wmic logicaldisk where drivetype=5 get description,name
Будут перечислены описание-description всех устр-в(CD-ROM) и их буквы(name) , включая виртуальные (description можно исключить).

remderbauer 30-07-2016 17:13 2655534

а если известно имя привода (метка), которая всегда одна и та же?

Iska 31-07-2016 03:53 2655641

Цитата:

Цитата remderbauer
а если известно имя привода (метка), которая всегда одна и та же? »

Запросто (на WSH):
Код:

Option Explicit

Dim objVerb

For Each objVerb In WScript.CreateObject("Shell.Application").NameSpace("D:\").self.Verbs
        If StrComp(objVerb.Name, "&Извлечь", vbTextCompare) = 0 Then
                objVerb.DoIt
        End If
Next

WScript.Quit 0


remderbauer 31-07-2016 10:31 2655666

Цитата:

Цитата Iska
NameSpace("D:\") »

Спасибо, однако есть два вопроса:
1. Букву диска можно не указывать? А просто прописать именно имя-метку привода?
2. Этот вот WSH, его как сохранить, в каком формате (расширение файла какое)? Потом просто его в автозагрузку кинуть и он будет работать или надо какие-то еще действия делать?

Iska 31-07-2016 19:26 2655782

Цитата:

Цитата remderbauer
1. Букву диска можно не указывать? А просто прописать именно имя-метку привода? »

Нет, нельзя не указывать.

Если речь про «Label», то потребуется расширить код таким образом:
Код:

Option Explicit

Dim strLabel

Dim objDrive
Dim objVerb


strLabel = "My Disk"

For Each objDrive In WScript.CreateObject("Scripting.FileSystemObject").Drives
        If StrComp(objDrive.VolumeName, strLabel, vbTextCompare) = 0 Then
                For Each objVerb In WScript.CreateObject("Shell.Application").NameSpace(objDrive.RootFolder.Path).self.Verbs
                        If StrComp(objVerb.Name, "&Извлечь", vbTextCompare) = 0 Then
                                objVerb.DoIt
                        End If
                Next
        End If
Next

WScript.Quit 0

Цитата:

Цитата remderbauer
2. Этот вот WSH, его как сохранить, в каком формате (расширение файла какое)? Потом просто его в автозагрузку кинуть и он будет работать или надо какие-то еще действия делать? »

Сохранить в файл с расширением «.vbs», поместить в любое место, поместить ярлык на него в папку «Автозагрузка» личного Главного меню, либо указать путь к файлу в реестре в любом из мест автозагрузки.

alpap 31-07-2016 20:22 2655799

У меня, например, таким образом определяется буква именно виртуального диска:
Код:

wmic path Win32_CDROMDrive where MediaType="DVD-ROM" get drive /value
для родного MediaType="DVD Writer"
у всех так? Это можно использовать?

Iska 31-07-2016 22:46 2655824

Нет конечно:
Код:

C:\Мои проекты>wmic.exe path Win32_CDROMDrive get Caption, Drive, MediaType /value


Caption=WinCDEmu drive
Drive=W:
MediaType=UNKNOWN


alpap 01-08-2016 09:02 2655857

жаль.

remderbauer 02-08-2016 11:18 2656109

а где мое последнее сообщение? О_о

ммм... короче, скрипт нужно притормозить, паузу ему прописать в началае секунд на 10-15 можно? А то скрипт запускается тогда, когда приводы видимо не готовы еще, они же виртуальные, а не аппаратные...

alpap 02-08-2016 11:31 2656113

Код:

::XP и выше
>nul ping -n 16 127.0.0.1
::Выше XP
>nul timeout /t 15


Iska 02-08-2016 11:34 2656114

Цитата:

Цитата remderbauer
паузу ему прописать в началае секунд на 10-15 можно? »

Код:

Option Explicit

Dim strLabel

Dim objDrive
Dim objVerb


WScript.Sleep 15 * 1000

strLabel = "My Disk"

For Each objDrive In WScript.CreateObject("Scripting.FileSystemObject").Drives
        If StrComp(objDrive.VolumeName, strLabel, vbTextCompare) = 0 Then
                For Each objVerb In WScript.CreateObject("Shell.Application").NameSpace(objDrive.RootFolder.Path).self.Verbs
                        If StrComp(objVerb.Name, "&Извлечь", vbTextCompare) = 0 Then
                                objVerb.DoIt
                        End If
                Next
        End If
Next

WScript.Quit 0



Время: 19:47.

Время: 19:47.
© OSzone.net 2001-