Войти

Показать полную графическую версию : Запуск скрипта из другого не загрязняя переменные


Ruzzz
26-05-2017, 01:33
1) Нужно запустить скрипт, который "загрязняет" переменные. Правильно ли я понимаю что для этого нужно:
- Запускать другой скрипт как cmd /k dirty.cmd (мне нужно ожидать)
- Или внутри dirty.cmd все обрамлять setlocal ... endlocal и тогда можно как call dirty.cmd
?

Iska
26-05-2017, 03:47
Конечная/глобальная цель сих действий какова? Опишите первичную задачу.

Ruzzz
26-05-2017, 13:51
Iska,
Сделал я такой файл https://github.com/Ruzzz/OneFileTools/blob/master/cmd/gen_vc.cmd
Его задача генерировать другой cmd файл для компиляции приложения из консоли с помощью Visual C++.
Из множества настроек компиляции я сделал для себя несколько "типовых" конфигураций.
И выбираю их через параметры для gen_vc.cmd
Генерируется например такой файл в итоге https://github.com/Ruzzz/OneFileTools/blob/master/build/zrun_make.cmd

Так вот, второй файл запускает настройку окружения компилятора Visual C++ и далее соответственно компилирует.
В итоге сборка одного или более приложений да еще и в разных конфигурациях может выглядеть так: https://github.com/Ruzzz/OneFileTools/blob/master/build/zrun.cmd

Т.е. генерация make.cmd файлов - один раз
Каждая перекомпиляция - запуск make.cmd
Сборка множества приложений - это вызов нескольких make.cmd
И вот тут проблемы, пока использую cmd /k *.cmd иначе разные make.cmd (запускает настройку окружения компилятора) конфликтуют друг с другом и сборка происходит с ошибкой.

Не знаю, нужно ли было это все расписывать. Ну раз просили подробней.
Так вот я хочу понять, почему setlocal ... endlocal внутри cmd мне не помагает? Приходиться делать для такого cmd команду cmd /k *.cmd?

greg zakharov
26-05-2017, 15:31
Ruzzz, не проще ли просто написать makefile и скармливать его nmake?

Iska
31-05-2017, 05:59
Ruzzz, спасибо за обстоятельное описание, но это, к сожалению, не помогло понять Вашу мысль, и что именно у Вас не работает. Сделайте простой и наглядный пример.




© OSzone.net 2001-2012