alexmoreman |
08-03-2011 22:50 1630287 |
Проблема с переменными окружения в VBS-скрипте
короче вот скрипт
Код:
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = False
objIE.Navigate "C:\WINDOWS\Temp\stranyca.html"
While objIE.Busy: WScript.Sleep 200:Wend
For Each tag In objIE.Document.getElementsByTagName("i")
strFilm = tag.innerHTML
Next
strFilm = Replace(strFilm," ","_")
Set tag = objIE.Document.getElementByid("start_download_form")
Set WshShell = CreateObject("WScript.Shell")
Retval = WshShell.Run ("cmd /c wget -c -t 0 http://share-nn.ru/" & _
tag.getAttribute("action") &" -O Music/" & strFilm, 1, True)
objIE.Quit
при замене
objIE.Navigate "C:\WINDOWS\Temp
на
objIE.Navigate "%SystemRoot%\Temp
у мня лезет ошибка, что не так?
|
alexmoreman, разбор переменных окружения в пакетных файлах выполняет сам интерпретатор «cmd.exe». Для WSH Вы должны явно делать это, например, вызовом функции «.ExpandEnvironmentStrings()» объекта «WScript.Shell». Образцы кода представлены ниже, правильный способ изложен в «2.», конкретно Ваш вариант — «2.a)»:
Код:
Option Explicit
' Enum SpecialFolderConst
Const WindowsFolder = 0
Const SystemFolder = 1
Const TemporaryFolder = 2
Dim objWshShell
Dim objFSO
Dim objWshEnvironment
Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
'-----------------------------------------------------------------------------
WScript.Echo "1."
WScript.Echo objWshShell.ExpandEnvironmentStrings("%SystemRoot%\Temp")
WScript.Echo
'-----------------------------------------------------------------------------
WScript.Echo "2."
WScript.Echo " a) System Environment:"
Set objWshEnvironment = objWshShell.Environment("SYSTEM")
WScript.Echo objWshShell.ExpandEnvironmentStrings(objWshEnvironment("TEMP"))
Set objWshEnvironment = Nothing
WScript.Echo
WScript.Echo " b) User Environment:"
Set objWshEnvironment = objWshShell.Environment("USER")
WScript.Echo objWshShell.ExpandEnvironmentStrings(objWshEnvironment("TEMP"))
Set objWshEnvironment = Nothing
WScript.Echo
'-----------------------------------------------------------------------------
WScript.Echo "3."
WScript.Echo " * User Environment:"
WScript.Echo objFSO.GetSpecialFolder(TemporaryFolder)
Set objFSO = Nothing
Set objWshShell = Nothing
WScript.Quit 0
P.S. WshEnvironment Object.
|
alexmoreman |
08-03-2011 23:56 1630332 |
Iska, спасибо конечно большое , но как реализовать я так и не догнал. наверно оставлю с прямым путём как есть
|
alexmoreman, примерно так:
Код:
…
objIE.Visible = False
With WScript.CreateObject("WScript.Shell")
strPath = .ExpandEnvironmentStrings(.Environment("SYSTEM").Item("TEMP"))
End With
objIE.Navigate "file://" & strPath & "\stranyca.html"
…
|
alexmoreman |
09-03-2011 00:44 1630356 |
Iska, вообще все зашибись работает а к переменной %TEMP% данное деяние возможно приспособить?
|
alexmoreman, к пользовательской «%TEMP%»? Конечно, можно. Попробуйте поменять в примере из #4 «….Environment(" SYSTEM")…» на «….Environment(" USER")…».
|
Время: 12:14.
© OSzone.net 2001-