PDA

Показать полную графическую версию : [решено] Кавычки и переменные среды


semen77
24-02-2013, 23:23
Здравствуйте. Проблема в названии темы.

Set FSO = CreateObject("Scripting.FileSystemObject")
Set oShell = CreateObject("WScript.Shell")
Set WshShell = WScript.CreateObject("WScript.Shell")
Const OverwriteExisting = True
'Место копирования
progdir = oShell.ExpandEnvironmentStrings ("%APPDATA%\My First Program\")
'Исходный файл
progfile1 = ".\Setup.exe"
'Конечный файл
progfile2 = progdir & "Setup.exe"
'Копирование
FSO.CopyFile progfile1, progfile2, OverwriteExisting
'Запускаем Setup.exe
WshShell.Run progfile2, 1, False

Рядом со скриптом лежит Setup.exe, его нужно поместить по адресу "%APPDATA%\My First Program\" и запустить.
Установщик помещается туда куда нужно, но не стартует.
Как правильно расставить кавычки?

P.S.: Будем считать что такая директория "%APPDATA%\My First Program\" существует.

Iska
25-02-2013, 00:05
Option Explicit

Dim strFileName
Dim strSourceFile
Dim strDestFolder


strFileName = "Setup.exe"

With WScript.CreateObject("Scripting.FileSystemObject")
strSourceFile = .BuildPath(.GetParentFolderName(WScript.ScriptFullName), strFileName)
strDestFolder = .BuildPath(WScript.CreateObject("Shell.Application").NameSpace("shell:appdata").self.Path, "My First Program")

If .FileExists(strSourceFile) Then
If .FolderExists(strDestFolder) Then
.CopyFile strSourceFile, strDestFolder & "\", True
WScript.CreateObject("WScript.Shell").Run """" & .BuildPath(strDestFolder, strFileName) & """", 1, False
Else
WScript.Echo "Destination folder [" & strDestFolder & "] not found."
End If
Else
WScript.Echo "Source file [" & strFile & "] not found."
End If
End With

WScript.Quit 0

semen77
25-02-2013, 03:03
Iska , спасибо что помогаете, но не могли бы вы на пальцах объяснить про скобки и экранирование? Где мой косяк?
Ведь в моём варианте, он делает почти всё правильно, за исключением того, что не запускается.

Iska
25-02-2013, 03:32
Скобки не при чём. Экранирования в VBScript нет — незачем: нет обработчика, ничего не надо и экранировать. Дело в пробелах в пути к файлу:WScript.CreateObject("WScript.Shell").Run """" & .BuildPath(strDestFolder, strFileName) & """", 1, False




© OSzone.net 2001-2012