--}}
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем

windows shell script - область действия переменных и др.

Сисадминское
6
4
С друзьями на NN.RU
В социальных сетях
Поделиться
По ходу разработки обращаюсь к коллективному разуму.

Преамбула.
---------------

Пишу скрипт, автоматизирующий обновление конфигурации софтины.
Для его работы нужно знать, куда установлена СУБД Oracle, и некоторые параметры установки (SID, LANG, ...). Почитал про reg.exe, решил, что нужно что-то более удобное. Почитал про wscript, наваял. Текущая версия в аттаче.

Понятно, что можно наваять аппликуху в каком-нить RAD tool. Но тогда уже проделанная работа по написанию скриптов как бы проделана почти впустую. Хотелось бы добить задачу скриптовыми методами.

Амбула.
---------------

Сейчас есть некий update.bat, который делает обновление. Я в нем могу вызвать OracleHome.vbs, который читает параметры из реестра. Т.е. кратко задача стоит так - получить от вызываемого скрипта список найденных им в реестре значений. Подскажите, как реализовать придуманные навскидку методы или направьте в нужном направлении, описав кратко другой метод.

1. Update.bat вызывает OracleHome.vbs, который пишет найденные в реестре значения в файл в виде set param1 = ″value1″. Update.bat каким-то образом этот файл зачитывает, и дальше может использовать переменные обычным методом %param1%. Просто вызвать из одного батника другой батник, в котором set param1 = ″value1″, я уже попробовал - нет, param1 в вызывающем скрипте недоступен, область его действия - вызываемый скрипт.

2. Передавать скрипту параметры можно непосредственно в строке вызова скрипта. А может ли скрипт возвратить не только Errorlevel, но список (массив) значений?

3. Все действия update.bat можно перенести в VBS-скрипт. Так оно, наверное, правильнее будет, только дольше - update.bat уже оттестирован.
К сообщению прикреплен файл:
18035867-oraclehome.zip   (2 Kb)   Скачать файл
Подкинули хорошую книжку, может, кому полезно будет.

zeta-cis.no-ip.org/public/WindowsCommandLineScripts.pdf
Просто вызвать из одного батника другой батник, в котором set param1 = ″value1″, я уже попробовал - нет, param1 в вызывающем скрипте недоступен, область его действия - вызываемый скрипт.



Решение найдено. Если в одном файле (1.bat) написать
------------
set orr="qqq"
------------

а в другом вызвать этот файл не просто именем, а командой call, то значение переменной сохранится.

2.bat:
-------------
@echo off
call 1.bat
echo %orr%
------------

$2.bat
"qqq"

$
FreeCat
10.12.2009
Ну правильно ... call открывает внутри пространства, а не независимо).
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем
Последние темы форумов
Форум Тема (Автор) Последний ответ Ответов
Материнские платы на запчасти и не только

Материнские платы на запчасти и не только Материнские платы и другие комплектующие Отправка в регионы после оплаты. Транспортной...
Цена: 3 000 руб.

Оперативная память Corsair XMS3 CMX8GX3M2A1600C9

Оперативная память Corsair XMS3 CMX8GX3M2A1600C9 Отправка в регионы после оплаты. Продаются сразу обе. Цена за обе 2000 руб....
Цена: 1 000 руб.

Сетевой фильтр APC Surge Arrest

Сетевой фильтр APC Surge Arrest для радиолюбителя.и не только Отправка в регионы после оплаты. ЦЕНА 3000 руб. В рабочем состоянии....
Цена: 3 000 руб.

Принтер лазерный HEWLETT PACKARD HP-6L

Принтер лазерный HEWLETT PACKARD HP-6L Отправка в регионы после оплаты. 3штуки БУ. Внешний вид из магазина простояли на складе...
Цена: 4 500 руб.