Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
30 / 30 / 1
Регистрация: 06.11.2012
Сообщений: 175
1

Изменение значений переменных в основном пакетном файле из вызываемого им пакетного файла

24.07.2013, 23:03. Показов 3345. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Допустим есть два батника, один вызывающий другой через call.
######## BAT.bat ########
Windows Batch file
1
2
3
4
5
6
7
8
echo off
setlocal EnableDelayedExpansion
set a=12
set b=32
echo. bit a=%a%[!a!] b=%b%[!b!]
call "%cd%\42\bit.bat"
echo. bit a=%a%[!a!] b=%b%[!b!]
pause
######## BIT.bat ########
Windows Batch file
1
2
3
4
5
setlocal EnableDelayedExpansion
echo. bit a=%a%[!a!] b=%b%[!b!]
set a=67
set b=46
echo. bit a=%a%[!a!] b=%b%[!b!]
Как добиться того, чтобы переменные из первого изменялись во втором, при этом были видны изменения в первом?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2013, 23:03
Ответы с готовыми решениями:

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

Создание пакетного файла с использованием списка значений в качестве параметров.
Посмотрите, пожалуйста, задание: Создайте пакетный файл P3 с использованием списка значений...

Передача значений переменных или ссылок, неконтролируемое изменение переменных
// заголовок класса ObservableCollection<LineDom> Method1; Method1 = new...

Цикл в пакетном файле
Здраствуйте передо мной поставили следующую задачу: Пакетный файл, предназначенный для создания...

7
Эксперт WindowsАвтор FAQ
18013 / 7714 / 892
Регистрация: 25.12.2011
Сообщений: 11,496
Записей в блоге: 16
24.07.2013, 23:53 2
Через call второй батник выполняется как обычная подпрограмма наследуя все окружение первого батника.
Возвращаясь обратно, все изменения сохраняются, если Вы не будете указывать команду локализации SetLocal.

1.cmd

Bash
1
2
3
4
5
6
7
@echo off
SetLocal
set a=1
echo #1 Before. a = %a%
call 2.cmd
echo #1 After. a = %a%
pause
2.cmd

Bash
1
2
echo #2 a = %a%
set a=2
Добавлено через 2 минуты
Случаи необходимости использовать DelayedExpansion расписаны в здесь. В Вашем коде они излишни.
0
30 / 30 / 1
Регистрация: 06.11.2012
Сообщений: 175
25.07.2013, 00:04  [ТС] 3
Здесь да, он излишен, но это только пример, у меня в самом скрипте есть необходимость в отложенной подстановке переменных. Мне нужно решить как раз эту дилемму.
0
Эксперт WindowsАвтор FAQ
18013 / 7714 / 892
Регистрация: 25.12.2011
Сообщений: 11,496
Записей в блоге: 16
25.07.2013, 01:54 4
Решили?
0
30 / 30 / 1
Регистрация: 06.11.2012
Сообщений: 175
25.07.2013, 05:44  [ТС] 5
Если об изменении переменных, то пока нет.

Хотя да, решил, всё просто, лишь второе инициализирование setlocal EnableDelayedExpansion было лишним, данный режим спокойно наследуется из вызываемого бата
0
Модератор
Эксперт JS
5237 / 2110 / 416
Регистрация: 06.01.2013
Сообщений: 4,839
04.08.2013, 21:45 6
Перед Setlocal выведите set в файл, после - считайте. То же самое перед и после выхода из батника.
Вывод :
Bash
1
set>dump.tmp
Считывание :
Bash
1
for /f "usebackq tokens=1* delims==" %%A in (dump.tmp) do (set "%%A=%%B")
P.S. Не тестил! (На смартфоне консоли нет)
2
Dragokas
04.08.2013, 23:58
  #7

Не по теме:

FraidZZ, SaveGame? :) А континуисы прилагаются?

0
Модератор
Эксперт JS
5237 / 2110 / 416
Регистрация: 06.01.2013
Сообщений: 4,839
05.08.2013, 11:08 8
Цитата Сообщение от Dragokas Посмотреть сообщение
FraidZZ, SaveGame?

Не по теме:

Можно новый крутой файл переменных как DLC продавать =D

0
05.08.2013, 11:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.08.2013, 11:08
Помогаю со студенческими работами здесь

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

Изменение значений переменных
Даны две переменные x и у. Если значения обеих переменных больше 0, то переменной х присвоить...

Изменение значений переменных
Есть функция. void drawgraphic(double min_x, double max_x) { double min_y = 1000000.0, max_y =...

Изменение значений переменных
Как поменять значения переменных a и b используя описанный ниже метод set? import...

Изменение значений переменных (интерпретатор)
А вот еще одна проблемка подъехала... Если вы видели мою прошлую тему, вы знаете что я делал...

Изменение значений переменных сессий
Доброго дня, Всем! Есть необходимость запоминать состояние элемента на сайте. На главной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru