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

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

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
у мня лезет ошибка, что не так?

Iska 08-03-2011 23:36 1630322

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, спасибо конечно большое , но как реализовать я так и не догнал. наверно оставлю с прямым путём как есть

Iska 09-03-2011 00:28 1630347

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% данное деяние возможно приспособить?

Iska 09-03-2011 09:00 1630471

alexmoreman, к пользовательской «%TEMP%»? Конечно, можно. Попробуйте поменять в примере из #4 «….Environment("SYSTEM")…» на «….Environment("USER")…».


Время: 12:14.

Время: 12:14.
© OSzone.net 2001-