Компьютерный форум 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=272429)

Instant_SR 20-11-2013 10:19 2258327

Передача значений переменной в другой скрипт
 
Доброго времени суток. Есть 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 и, в случае нахождения таковой, использовать ее имя в адресе.
Жду помощи, идей, решений...

Iska 20-11-2013 14:35 2258489

Цитата:

Цитата Instant_SR
Как можно передать эту переменную в vbs из bat? »

Так же, как и из vbs в пакетный файл — параметром командной строки:
Код:

cscript.exe //nologo "Путь\Скрипт.vbs" "gfum!result!"

Instant_SR 20-11-2013 17:41 2258595

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

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

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

c:\gfum100\run.exe

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

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

Instant_SR 20-11-2013 18:08 2258617

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

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

Iska 20-11-2013 19:02 2258652

Цитата:

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

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

А надо использовать «WScript.Arguments.Item(0)». Вы передаёте скрипту параметром значение, а не переменную. А чтобы не было таких «бяк», всегда используйте требование предварительного описания переменных — «Option Explicit» первой строкой скрипта. Сразу увидите ошибку.

Instant_SR 21-11-2013 10:04 2259045

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

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

Instant_SR 21-11-2013 11:36 2259095

отбой... все решил... верней вызов из .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"

Iska 21-11-2013 14:22 2259190

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


Время: 21:22.

Время: 21:22.
© OSzone.net 2001-