Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Проблема передачи параметров в скрипт при запуске из ярлыка (http://forum.oszone.net/showthread.php?t=215108)

gora 08-09-2011 10:07 1748588

Проблема передачи параметров в скрипт при запуске из ярлыка
 
Создаю ярлык в контекстном меню SendTo. В свойствах ярлыка прописал запуск с ключом /Cs.


В скрипте ChngCase.vbs первыми строками стоит проверка передаваемых параметров:
Код:

F = WScript.Arguments(0)
MsgBox(F)
CurrentFile = WScript.Arguments(1)
MsgBox(CurrentFile)

Скрипт лежит по указанному в ярлыке адресу.
Устанавливаю курсор на файл -> ПКМ -> Отправить -> Щелчок по ярлыку "С заглавной буквы". Появляется первое окно в котором отображается полный путь к файлу под курсором. Закрываю это окно, но второго окна не появляется, а появляется ошибка
Цитата:

Ошибка: Индекс выходит за пределы допустимого диапазона
Появление ее понятно, т.к., в скрипт передан только один (второй, а не первый) параметр - полный путь к файлу, а куда пропадает ключ /Cs для меня остается загадкой!? :dont-know
Положил рядом со скриптом одноименный батник и изменил в ярлыке расширение на .bat, дабы проверить передачу параметров ярлыком.
Файл ChngCase.bat
Код:

@Echo Off
Echo %1
Echo %2
Pause>Nul

В результате запуска в консольном окне вижу как и положено две строки: в первой ключ, во второй путь к файлу под курсором.

Как правильно создать ярлык для запуска .vbs скрипта с передачей ему этих двух параметров: ключа и пути к файлу ?

SendMessage 08-09-2011 13:26 1748754

Перед маршрутом скрипта вставьте сервер сценариев wscript.exe.

Кроме того можно разделить параметры на именованные и нет.
/Cs - его лучше проверять как именованный. Например:
Код:

If WScript.Arguments.Named.Exists("Cs") Then MsgBox "есть"
И тогда не будет иметь значение, каким по порядку он стоит. А неименованные в таком случае можно получать отдельным списком.
Код:

CurrentFile = WScript.Arguments.UnNamed.Item(0)
MsgBox(CurrentFile)



Время: 13:49.

Время: 13:49.
© OSzone.net 2001-