Войти

Показать полную графическую версию : Не могу сохранить файл


Hancog
16-08-2014, 23:15
Проблема с переменной не могу сохранить файл через скрипт в %appdata% сохраняю таким способом oADOStream.SaveToFile "%appdata%\file", 2

Iska
17-08-2014, 00:46
WScript.Echo WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%AppData%")
WScript.Echo WScript.CreateObject("Shell.Application").NameSpace("shell:AppData").self.Path
Второй способ предпочтительнее.

Hancog
17-08-2014, 00:55
Немножко не понял а во втором варианте вместо NameSpace имя файла сохраняемого писать? Просто попробовал не получается

Полный скрипт
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
'подключение
oXMLHTTP.Open "GET", "http://tau.rghost.ru/57502402/image.png", 0
'получение файла
oXMLHTTP.Send
Set oADOStream = CreateObject("ADODB.Stream")
oADOStream.Mode = 3 'разрешение на чтение и запись
oADOStream.Type = 1 'тип данных - Binary
oADOStream.Open
oADOStream.Write oXMLHTTP.responseBody
'сохранение (с перезаписью файла при необходимости)
WScript.Echo WScript.CreateObject("Shell.Application").NameSpace("shell:AppData").self.Path

может чего не понимаю...

Iska
17-08-2014, 06:35
Сохраните с расширением «.wsf»:
<?xml version='1.0' encoding='windows-1251' standalone='yes'?>
<job>
<script language='VBScript'>
<![CDATA[
Option Explicit

Const adTypeBinary = 1
Const adModeReadWrite = 3
Const adSaveCreateOverWrite = 2


Dim strUrl

Dim objXMLHTTPRequest
Dim objFSO


strUrl = "http://tau.rghost.ru/57502402/image.png"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objXMLHTTPRequest = WScript.CreateObject("Msxml2.XMLHTTP")

objXMLHTTPRequest.Open "GET", strUrl,False
objXMLHTTPRequest.send

If objXMLHTTPRequest.status = 200 Then
With WScript.CreateObject("ADODB.Stream")
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write objXMLHTTPRequest.responseBody
.SaveToFile objFSO.BuildPath(WScript.CreateObject("Shell.Application").NameSpace("shell:AppData").self.Path, objFSO.GetFileName(decodeURI(strUrl))), adSaveCreateOverWrite
End With
Else
WScript.Echo "Status: " & CStr(objXMLHTTPRequest.status)
End If

Set objXMLHTTPRequest = Nothing
Set objFSO = Nothing

WScript.Quit 0
]]>
</script>

<script language='JScript'>
<![CDATA[
function decodeURI(sUrl) {
return decodeURI(sUrl);
}
]]>
</script>
</job>

Hancog
17-08-2014, 10:29
Спасибо,а как мне добавить деректорию в аппдате? ну к примеру appdata\adobe

Iska
17-08-2014, 10:58
добавить »
Добавить — означает «создать»? Или имеется в виду — просто дописать к пути в виде «shell:AppData+adobe+имя файла»?

Hancog
17-08-2014, 12:07
Нет не создать ну что бы в подпапку аппдаты можно было сохранить

Iska
17-08-2014, 13:54
Например, так:
<?xml version='1.0' encoding='windows-1251' standalone='yes'?>
<job>
<script language='VBScript'>
<![CDATA[
Option Explicit

Const adTypeBinary = 1
Const adModeReadWrite = 3
Const adSaveCreateOverWrite = 2


Dim strUrl
Dim strDestPath

Dim objFSO
Dim objXMLHTTPRequest


strUrl = "http://tau.rghost.ru/57502402/image.png"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

strDestPath = objFSO.BuildPath(WScript.CreateObject("Shell.Application").NameSpace("shell:AppData").self.Path, "adobe")

If objFSO.FolderExists(strDestPath) Then
Set objXMLHTTPRequest = WScript.CreateObject("Msxml2.XMLHTTP")

objXMLHTTPRequest.Open "GET", strUrl,False
objXMLHTTPRequest.send

If objXMLHTTPRequest.status = 200 Then
With WScript.CreateObject("ADODB.Stream")
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write objXMLHTTPRequest.responseBody
.SaveToFile objFSO.BuildPath(strDestPath, objFSO.GetFileName(decodeURI(strUrl))), adSaveCreateOverWrite
End With
Else
WScript.Echo "Status: " & CStr(objXMLHTTPRequest.status)
End If

Set objXMLHTTPRequest = Nothing
Else
WScript.Echo "Destination path [" & strDestPath & "] not found."
WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0
]]>
</script>

<script language='JScript'>
<![CDATA[
function decodeURI(sUrl) {
return decodeURI(sUrl);
}
]]>
</script>
</job>

Hancog
17-08-2014, 18:10
понял,а можно еще в конце запуск файла добавить?

Hancog
17-08-2014, 20:55
ап тему

Iska
17-08-2014, 23:27
а можно еще в конце запуск файла добавить? »
Какого файла?

Hancog
18-08-2014, 10:45
который будут сохранятся в аппдату,а именно картинку

Iska
18-08-2014, 13:56
Пробуйте:
<?xml version='1.0' encoding='windows-1251' standalone='yes'?>
<job>
<script language='VBScript'>
<![CDATA[
Option Explicit

Const adTypeBinary = 1
Const adModeReadWrite = 3
Const adSaveCreateOverWrite = 2


Dim strUrl
Dim strDestPath

Dim objFSO
Dim objShell
Dim objXMLHTTPRequest

Dim strFullName


strUrl = "http://tau.rghost.ru/57502402/image.png"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objShell = WScript.CreateObject("Shell.Application")

strDestPath = objFSO.BuildPath(objShell.NameSpace("shell:AppData").self.Path, "adobe")

If objFSO.FolderExists(strDestPath) Then
Set objXMLHTTPRequest = WScript.CreateObject("Msxml2.XMLHTTP")

objXMLHTTPRequest.Open "GET", strUrl,False
objXMLHTTPRequest.send

If objXMLHTTPRequest.status = 200 Then
strFullName = objFSO.BuildPath(strDestPath, objFSO.GetFileName(decodeURI(strUrl)))

With WScript.CreateObject("ADODB.Stream")
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write objXMLHTTPRequest.responseBody
.SaveToFile strFullName, adSaveCreateOverWrite
End With

objShell.ShellExecute strFullName
Else
WScript.Echo "Status: " & CStr(objXMLHTTPRequest.status)
End If

Set objXMLHTTPRequest = Nothing
Else
WScript.Echo "Destination path [" & strDestPath & "] not found."
WScript.Quit 1
End If

Set objShell = Nothing
Set objFSO = Nothing

WScript.Quit 0
]]>
</script>

<script language='JScript'>
<![CDATA[
function decodeURI(sUrl) {
return decodeURI(sUrl);
}
]]>
</script>
</job>
Вопрос: в чём смысл сохранения именно в «shell:appdata», а не, скажем, в «%Temp%»?

Hancog
19-08-2014, 01:07
Да можно и в темп было,я просто не когда не заходил в папку тем и не пользовался,а с аппдатой уже знаком




© OSzone.net 2001-2012