Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Передача значений переменной в другой скрипт

Ответить
Настройки темы
CMD/BAT - [решено] Передача значений переменной в другой скрипт

Новый участник


Сообщения: 26
Благодарности: 1

Профиль | Отправить PM | Цитировать


Доброго времени суток. Есть 2 файла .bat и .vbs
в .bat есть код:
Код: Выделить весь код
FOR /f "TOKENS=*" %%i IN ('DIR /b "%PathLocal%\Sirene\%COMPUTERNAME%"') DO (    ::тут просто ищется папка в сети
	SET result=%%i                                                                                                            ::тут устанавливается значение переменной "result"
        IF "!result:~0,4!"=="gfum" (                                                                                        ::тут в зависимости от того какое значение переменной некое действие 
                XCOPY %PathLocal%\Sirene\%COMPUTERNAME%\!result! C:\!result!\/e/i/q/h/y ::собственно само действие "xcopy"
                IF EXIST C:\!result! (                                                                                             ::проверка как оно там скопировано...
Из всего, что выше интересует только значение переменной result оно по сути gfum[число], из-за этого [числа] затруднительно постоянно учитывать значение, а число всегда меняется без этого никак.

теперь файл .vbs он по-сути создает ярлык на исполняющий файл, в копируемой .bat-ником папке, в нем вот такой код:

Код: Выделить весь код
oShortCut.IconLocation = "c:\gfum[число]\AutoUpdate.exe ,0" :: сложность в передаче другому скрипту параметров переменной из основного скрипта
Как можно передать эту переменную в vbs из bat?
Есть мысль в vbs запустить проверку аналогичную в bat с поиском папки начинающейся на gfum и, в случае нахождения таковой, использовать ее имя в адресе.
Жду помощи, идей, решений...

Отправлено: 10:19, 20-11-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Instant_SR:
Как можно передать эту переменную в vbs из bat? »
Так же, как и из vbs в пакетный файл — параметром командной строки:
Код: Выделить весь код
cscript.exe //nologo "Путь\Скрипт.vbs" "gfum!result!"
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:35, 20-11-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 26
Благодарности: 1

Профиль | Отправить PM | Цитировать


еще вопрос остался:
в VBS использую для адреса в ярлыке:

.TargetPath = "c:\" & result & "\run.exe"

При условии, что result=gfum100, ярлык должен искать run.exe по адресу:

c:\gfum100\run.exe

Ярлык создается, но ссылается на: C:\run.exe

Что не так? при исправлении result на c:\gfum100 , конструкцию .TargetPath = result & "\run.exe" принимает нормально

Отправлено: 17:41, 20-11-2013 | #3


Новый участник


Сообщения: 26
Благодарности: 1

Профиль | Отправить PM | Цитировать


проверил чуть, в VBS ошибок нет с помощью MsgBox вывел result = пустое сообщение, выходит, из BAT файла не передается result.
В *.bat вызываю скрипт так:
cscript.exe //nologo "путь\скипт.vbs" "!result!"

перед этим вызовом, попробовал отобразить ECHO !result! получил gfum100
Выходит vbs вызывается, а переменная не получает значения

Отправлено: 18:08, 20-11-2013 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Instant_SR:
в VBS использую для адреса в ярлыке:
Код: Выделить весь код
.TargetPath = "c:\" & result & "\run.exe"
»
А надо использовать «WScript.Arguments.Item(0)». Вы передаёте скрипту параметром значение, а не переменную. А чтобы не было таких «бяк», всегда используйте требование предварительного описания переменных — «Option Explicit» первой строкой скрипта. Сразу увидите ошибку.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:02, 20-11-2013 | #5


Новый участник


Сообщения: 26
Благодарности: 1

Профиль | Отправить PM | Цитировать


Так, тоже полезно, спасибо, но при выводе:
MsgBox WScript.Arguments.Item(0)

получаю конструкцию: result=gfum100
выходит, нужно отсечь часть символов от начала, а просто к result как бы перейти, чтобы в дальнейшем пользоваться уже result как переменной? В начале OptionExplict есть, Dim result объявлена...

Последний раз редактировалось Instant_SR, 21-11-2013 в 10:41.


Отправлено: 10:04, 21-11-2013 | #6


Новый участник


Сообщения: 26
Благодарности: 1

Профиль | Отправить PM | Цитировать


отбой... все решил... верней вызов из .bat был неверный:
было: cscript.exe //nologo "\\путь\файл.vbs" "result=!result!"
надо: cscript.exe //nologo "\\путь\файл.vbs" "!result!"
ну и в .vbs:
Код: Выделить весь код
Option Explicit
это вначале обязательно. И при указании адреса для ярлыка, можно использовать:

.TargetPath = "c:\" & WScript.Arguments.Item(0) & "\run.exe"

тему "решаем" но пожелание осталось бы использовать не "громоздкую" конструкцию, а объявить в .vbs переменную result и пользоваться ей
т.е. Dim result
и .TargetPath = "c:\" & result & "\run.exe"

Отправлено: 11:36, 21-11-2013 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Instant_SR, использование параметров — это не «громоздкая конструкция», а единственно разумный и правильный вариант (есть ещё один, мало разумный).

Отправлено: 14:22, 21-11-2013 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Передача значений переменной в другой скрипт

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Передача переменной из цикла for Vilgelm Скриптовые языки администрирования Windows 2 14-08-2011 15:27
C/C++ - Передача переменной в другую программу. ikif Программирование и базы данных 1 29-04-2011 21:50
Передача переменной на другую страничку darksmoke Вебмастеру 6 28-08-2008 01:04
Передача переменной из PHP в JavaScript rulllesss Вебмастеру 1 25-07-2005 09:27
PHP и передача значений переменных... Guest Вебмастеру 3 13-04-2004 14:01




 
Переход