Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] определение CD/DVD-привода по маркерному файлу WIN51IP

Ответить
Настройки темы
VBS/WSH/JS - [решено] определение CD/DVD-привода по маркерному файлу WIN51IP

Новый участник


Сообщения: 20
Благодарности: 1

Профиль | Отправить PM | Цитировать


прошу помочь с написанием скрипта VBS

(изначально скрипт помещается в папку автозагрузки и срабатывает при входе в систему (Win XP)

надо чтобы скрипт определил CD/DVD-привод содержащий диск с маркерным файлом WIN51IP
если файл WIN51IP обнаружен, то выдал сообщение "Вы хотите установить обновление?" "ДА" "НЕТ"

при нажатии "ДА" скрипт должен в фоновом режиме (скрытно) запустить файл
X:\I386\UPDATE\RUNONCE.bat (где "Х" - CD/DVD-привод), при нажатии "НЕТ" - закрытие окна

если нужного файла WIN51IP в CD/DVD-приводе не имеется, то скрипт выдает сообщение
"Вставьте диск 1","ОК" (при этом при нажатии "ОК" в отсутствие диска скрипт
вновь проверяет приводы и ищет маркерный файл до тех пор пока не появится
нужный CD/DVD-диск)

после выполненя X:\I386\UPDATE\12345.bat, срипт должен выдать сообщение "Требуется перезагрузка компьютера", "ОК"
после нажатия "ОК" - перезагрузка и самоудаление скрипта

Отправлено: 08:23, 22-08-2010

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
Set Shell = WScript.CreateObject("WScript.Shell")

Do
  Drive = GetDriveByFyle("WIN51IP")
  If Len(Drive)>0 Then Exit Do
  MsgBox "Вставьте диск 1",vbOKOnly+vbExclamation+vbApplicationModal,"Пауза"
Loop

MsgRet = MsgBox("Вы хотите установить обновление?",vbOKCancel+vbQuestion+vbApplicationModal,"Пауза")
If MsgRet=2 Then WScript.Quit 2

Shell.Run "CMD /C "& Drive &":\I386\UPDATE\RUNONCE.bat", 0, vbTrue
MsgBox "Сейчас будет произведена перезагрузка компьютера!",vbOKOnly+vbExclamation+vbApplicationModal,"Пауза"

For Each OS In GetObject ("winmgmts:{(Shutdown)}//./root/cimv2").InstancesOf("Win32_OperatingSystem")
  Set Security = OS.Security_
  Set PrivObj = Security.Privileges
  PrivObj.Add(18)
  OS.Win32ShutDown 6
Next

Function GetDriveByFyle(file)
  Dim fso, d, dc
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set dc = fso.Drives
  For Each d in dc
    If d.DriveType = 4 Then
      If fso.FileExists(d.DriveLetter &":\"& file) Then
        GetDriveByFyle = d.DriveLetter
        Exit Function
      End If
    End If
  Next
  GetDriveByFyle = ""
End Function
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:33, 22-08-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 140
Благодарности: 92

Профиль | Отправить PM | Цитировать


vosya,

Код: Выделить весь код
Set objFSO    = CreateObject("Scripting.FileSystemObject")
Set WSHShell  = WScript.CreateObject("WScript.Shell")
Set colDrives = objFSO.Drives: InStat    = False
    DO: For Each objDrive in colDrives
        IF objDrive.DriveType = 4 And objDrive.IsReady Then
           Install(objDrive.DriveLetter): InStat = True
        End IF
    Next

    IF Not InStat Then Wscript.Echo "Вставьте Диск"
    Loop

Function Install(Strmarker)
strSourceFile = Strmarker & ":\WIN51IP"
Set objFile = objFSO.GetFile(strSourceFile)
    If objFSO.FileExists(objFile) Then 
       MsgRetval = MsgBox("Установить обновление?", _
       vbOKCancel+vbQuestion+vbApplicationModal, _
       "Установка...")
       If MsgRetval=2 Then WScript.Quit (2)
    WSHShellShell.Run "cmd /c "& Strmarker &":\i386\update\runonce.bat", 0, True
    WSHShellShell.Run "cmd /c shutdown /r /t 10", 0, False
    FSO.DeleteFile WScript.ScriptFullName, 0
    Wscript.Quit (0)
    Else
    InStat = False
End if
End Function
PS : я вижу, Amel27, Вы меня уже опередили, не обновил страничку вовремя..., ну ладно, наши способы несколько отличны...
PPS : уточняю по поводу второго сообщения, предшествующего перезагрузке - команда "shutdown" выдаст это предупреждение самостоятельно!

Последний раз редактировалось deepred, 22-08-2010 в 17:46. Причина: 1. опоздал..., 2. уточнение и добавлено самоудаление скрипта

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:12, 22-08-2010 | #3


Новый участник


Сообщения: 20
Благодарности: 1

Профиль | Отправить PM | Цитировать


amel27,
deepred,

ребята! большое человеческое спасибо за помощь!

Отправлено: 15:36, 22-08-2010 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] определение CD/DVD-привода по маркерному файлу WIN51IP

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Замена DVD привода SlonSpb Хочу все знать 5 12-02-2009 10:58
Загрузка с DVD привода Frez Оптические приводы 5 20-10-2008 14:15
Разное - PIO-режим у DVD привода DNK_Inc Microsoft Windows 2000/XP 0 14-09-2007 18:49
Маркерные файлы (WIN51IP, WIN51IP.SP1, WIN51IP.SP2) Porscheman Автоматическая установка Windows 2000/XP/2003 7 06-01-2007 17:06
Пропали в системе CD(DVD) привода... Guest Microsoft Windows 2000/XP 9 28-02-2003 12:25




 
Переход