2015-11-26 5 views
1

Ну, это не так мило. Я хочу, чтобы открыть определенный файл из %TMP% каталога с помощью VBScriptОткрыть файл из специальной (временной) папки

WScript.CreateObject("WScript.Shell").Run(WScript.CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2)+"\OpenMe.txt") 

Он отлично работает на Windows 7, но не на XP, потому что есть пространство в пути к папке Temp.

Некоторые учебные пособия предлагают использовать кавычки (""), но я не знаю, как это сделать.

ответ

1

Просто объедините двойные кавычки в начало и конец строки пути. Поскольку VBScript использует двойные кавычки для строковых литералов, вам нужно указать их либо через их код ASCII (Chr(34)), либо путем помещения двух последующих двойных кавычек внутри строкового литерала (""""). Удвоение ускользает от двойной кавычки.

WScript.CreateObject("WScript.Shell").Run(Chr(34)+WScript.CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2)+"\OpenMe.txt"+Chr(34)) 

На более общем плане, вы должны использовать оператор конкатенации (&) вместо оператора сложения (+). Несмотря на то, что последний будет работать в большинстве ситуаций, есть некоторые крайние случаи, когда он приведет к ошибке. Кроме того, избегая вложенных вызовов методов, пути построения с помощью метода BuildPath и, возможно, определяя функцию кавычек, сделает более чистый код, который лучше понять и поддерживать.

Function qq(s) 
    qq = Chr(34) & s & Chr(34) 
End Function 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set sh = CreateObject("WScript.Shell") 

tempfolder = fso.GetSpecialFolder(2) 
path = fso.BuildPath(tempfolder, "OpenMe.txt") 

sh.Run qq(path) 
+0

Это замечательно. можете ли вы помочь мне создать что-то подобное в vbs _start_ _ "" _ _ "C: \ Users \ Denis \ AppData \ Local \ Temp \ OpenMe.txt" _ где _ "C: \ Users \ Denis \ AppData \ Local \ Temp \ OpenMe.txt "_ должен быть создан из _WScript.CreateObject (" WScript.Shell "). Выполнить (Chr (34) + WScript.CreateObject (" Scripting.FileSystemObject "). GetSpecialFolder (2) +" \ OpenMe. txt "_ –

+0

Я хочу записать это в пакетный файл –

+1

Почему? Поместите' start '""% TEMP% \ OpenMe.txt "в ваш командный файл, если вы хотите использовать пакет в любом случае. –

Смежные вопросы