Показать полную графическую версию : [решено] Проблема с переменными окружения в VBS-скрипте
alexmoreman
08-03-2011, 22:50
короче вот скрипт
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 (http://msdn.microsoft.com/en-us/library/6s7w15a0(v=vs.85).aspx).
alexmoreman
08-03-2011, 23:56
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
Iska, вообще все зашибись работает а к переменной %TEMP% данное деяние возможно приспособить?
alexmoreman, к пользовательской «%TEMP%»? Конечно, можно. Попробуйте поменять в примере из #4 (http://forum.oszone.net/post-1630347-4.html) «….Environment("SYSTEM")…» на «….Environment("USER")…».
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.