VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS

Аватара пользователя
BigBoo

VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS

Сообщение BigBoo »

Возможно вопрос банален, но никак не могу разобраться, как использовать кавычки внутри кавычек в VBS. То есть, например даже элементарная команда

Код:

Код: Выделить всё

msgbox "Меню "Пуск""

выдаёт ошибку. Хочу напечатать именно Меню "Пуск" ,а не Меню Пуск. Так же и с другими командами. Пишу скрипт добавляющий строки в файл и в этих строчках есть кавычки. Был бы признателен за помощь.
Аватара пользователя
BigBoo

Re: VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS

Сообщение BigBoo »

OSArev, спасибо, через Exec работает. Получается, что в команде Run нельзя использовать переменные и дело здесь не в кавычках?



Iska, Увидил Ваше сообщение позже. Да, интересное решение, ни за что бы не додумался! Изображение
Аватара пользователя
C0D3X

Re: VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS

Сообщение C0D3X »

Спасибо, Iska! Это хорошее решение, но хотелось бы доработать этот код с такой целью, что: а вдруг сервис завис и простая остановка тут не поможет? Тогда, подождав секунд 10, будет необходимо убить соответствующий процесс и запустить сервис заново. Как будет выглядеть скрипт именно с такой задачей?
Аватара пользователя
BigBoo

Re: VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS

Сообщение BigBoo »

Цитата BigBoo:



Строка запуска заключается в ТРОЙНЫЕ кавычки!
VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS




Просто путь C:\Program Files\Internet Explorer\Iexplore.exe содержит пробелы и его, естественно, надо заключать в кавычки, чтобы корректно отработала командная строка. А поскольку этот путь находится внутри строки, то и удваиваются кавычки вокруг этого пути.

Обычный путь - без пробелов, не обязательно заключать в кавычки. Например:



Код:

Код: Выделить всё

WSHShell.Run "C:\Windows\notepad.exe c:\test.txt"
Аватара пользователя
BigBoo

Re: VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS

Сообщение BigBoo »

Цитата SendMessage:



А поскольку этот путь находится внутри строки, то и удваиваются кавычки
VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS




Но ведь такая конструкция не работает:



Код:

Код: Выделить всё

WSHShell.Run ""C:\Program Files\Internet Explorer\Iexplore.exe""

А работает только с ТРОЙНЫМИ кавычками:

Код:

Код: Выделить всё

WSHShell.Run """C:\Program Files\Internet Explorer\Iexplore.exe"""

Честно не знаю, для чего нужно утраивать кавычки, но работает только так!

С путями без пробелов согласен, да это и само собой разумеется.
Аватара пользователя
SendMessage

Re: VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS

Сообщение SendMessage »

Цитата BigBoo:



Но ведь такая конструкция не работает:
VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS




Потому что, как написал Iska, кавычки, если они находятся внутри текста vbs, а он в нем всегда обрамляется кавычками, должны удваиваться.

В конструкции WSHShell.Run ""C:\Program Files\Internet Explorer\Iexplore.exe"" внешние кавычки относятся не к тексту, а к обрамлению текста. А сам текст такой - "C:\Program Files\Internet Explorer\Iexplore.exe". Но чтобы vbs правильно отображал кавычки в самом тексте - их делают двойными.

Поэтому они и вышли тройными - WSHShell.Run """C:\Program Files\Internet Explorer\Iexplore.exe""" - относящиеся к обрамлению текста я выделил красным, а кавычки текста синим.

Надеюсь, теперь понятно до конца?



Кстати, если в vbs нужно передать, например, текст состоящий из кавычек, вот такой:

Код:

то записать придется так:



Код:

Изображение
Аватара пользователя
BigBoo

Re: VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS

Сообщение BigBoo »

Помогите люди добрые, битый час бьюсь. Сколько только кавычек не ставил - результат нулевой! Как сделать, чтоб это заработало:

Код:

Код: Выделить всё

Set Create = CreateObject("Scripting.FileSystemObject")  
Set Folder = Create.GetFolder(WshShell.CurrentDirectory)  
Str = Folder.Path &"\Папка\Прога.exe"  
WSHShell.Run Str
Аватара пользователя
SendMessage

Re: VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS

Сообщение SendMessage »

Цитата BigBoo:



Помогите люди добрые, битый час бьюсь
VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS




Если, только запустиь прогу, то:



Код:

Код: Выделить всё

Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("Полный_путь\прога.exe")

Если нет, то мысль яснее
Аватара пользователя
BigBoo

Re: VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS

Сообщение BigBoo »

Помогите люди добрые, битый час бьюсь. Сколько только кавычек не ставил - результат нулевой! Как сделать, чтоб это заработало:

Код:

Код: Выделить всё

Set Create = CreateObject("Scripting.FileSystemObject")  
Set Folder = Create.GetFolder(WshShell.CurrentDirectory)  
Str = Folder.Path &"\Папка\Прога.exe"  
WSHShell.Run Str
Ответить

Вернуться в «Скриптовые языки администрирования Windows»