Показать полную графическую версию : скрипт извлечения всех виртуальных приводов оптических дисков
remderbauer
29-07-2016, 23:53
Добрый день. Прошу помощи. Нужен скрипт в автозагрузку, чтобы при запуске Виндовс 7 все виртуальные приводы извлекались (в контекстном меню привода есть команда "Извлечь"). Спасибо заранее
чтобы при запуске Виндовс 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
а если известно имя привода (метка), которая всегда одна и та же?
а если известно имя привода (метка), которая всегда одна и та же? »
Запросто (на 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
NameSpace("D:\") »
Спасибо, однако есть два вопроса:
1. Букву диска можно не указывать? А просто прописать именно имя-метку привода?
2. Этот вот WSH, его как сохранить, в каком формате (расширение файла какое)? Потом просто его в автозагрузку кинуть и он будет работать или надо какие-то еще действия делать?
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
2. Этот вот WSH, его как сохранить, в каком формате (расширение файла какое)? Потом просто его в автозагрузку кинуть и он будет работать или надо какие-то еще действия делать? »
Сохранить в файл с расширением «.vbs», поместить в любое место, поместить ярлык на него в папку «Автозагрузка» личного Главного меню, либо указать путь к файлу в реестре в любом из мест автозагрузки.
У меня, например, таким образом определяется буква именно виртуального диска:
wmic path Win32_CDROMDrive where MediaType="DVD-ROM" get drive /value
для родного MediaType="DVD Writer"
у всех так? Это можно использовать?
Нет конечно:
C:\Мои проекты>wmic.exe path Win32_CDROMDrive get Caption, Drive, MediaType /value
Caption=WinCDEmu drive
Drive=W:
MediaType=UNKNOWN
remderbauer
02-08-2016, 11:18
а где мое последнее сообщение? О_о
ммм... короче, скрипт нужно притормозить, паузу ему прописать в началае секунд на 10-15 можно? А то скрипт запускается тогда, когда приводы видимо не готовы еще, они же виртуальные, а не аппаратные...
::XP и выше
>nul ping -n 16 127.0.0.1
::Выше XP
>nul timeout /t 15
паузу ему прописать в началае секунд на 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
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.