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

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

Ответить
Настройки темы
CMD/BAT - [решено] Проверка изменения переменных в *.bat файле

Аватара для VoinLuny

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


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

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


У меня есть батник в котором зациклен процесс расчетов. Мне нужно, чтобы он повторялся до тех пор, пока эти расчеты приводят к изменениям результатов (чтобы несколько сгладить О_о впечатление от моего описания скажу, что пишу в батнике алгоритм кластеризации по методу k-means). Собственно вопрос: Как мне проверить происходит ли изменение переменной x после расчета?
Т.е. Как сравнить переменную до и после? Сложность в том, что желательно делать это не по одной переменной, а группами или сразу все, т.к. переменных много. Помогите пожалуйста.

Отправлено: 19:22, 28-03-2012

 

Старожил


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

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


если много, то наверно проще всего вывести все в файл,
после расчета – в другой файл, и сравнить

Отправлено: 19:41, 28-03-2012 | #2



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

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


Аватара для VoinLuny

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


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

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


Дело в том, что в зависимости от того, будет меняться или нет, батник должен либо продолжать вычисления либо завершиться. В этом то и проблема

ну и потом как много? 9 штук. Просто сравнивать их по одной ну уж очень неудобно. И не совсем понятно как. Я додумался только после каждого круга расчетов переменную переобозначать и сравнивать старое обозначение с новым...

Отправлено: 19:43, 28-03-2012 | #3


Ветеран


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

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


VoinLuny,
Все равно при каждой итерации потребуется создавать проверочную переменную. Например:
Код: Выделить весь код
@echo off
setlocal

set "a=1"
set "b=2"
set "c=3"

set "test=%a%%b%%c%"

:loop
set /p a="Enter value or skip: "
set /p b="Enter value or skip: "
set /p с="Enter value or skip: "

if "%test%"=="%a%%b%%c%" (goto:eof) else (set "test=%a%%b%%c%" && goto:loop)
Вместо "set /p" какие-то расчеты.

Последний раз редактировалось Foreigner, 28-03-2012 в 21:42.


Отправлено: 20:40, 28-03-2012 | #4


Старожил


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

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


Код: Выделить весь код
:loop
set > 0.tmp
rem вычисления
set > 1.tmp
fc 0.tmp 1.tmp >nul ||goto :loop
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:45, 28-03-2012 | #5


Аватара для VoinLuny

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


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

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


Foreigner, не могли бы Вы пояснить,
Цитата Foreigner:
set "test=%a%%b%%c%" »
что делает? Что она задает переменную тест со значением abc я понимаю, но что она из себя представляет в блоке IF? Ведь мы её и так задаем abc а тут
Цитата Foreigner:
if "%test%"=="%a%%b%%c%" »
идет проверка этого, следовательно всегда будет положительный результат, разве нет?


kiripanda, тут тоже вопрос.
Цитата kiripanda:
set > 0.tmp »
в этом временном файле будут какие данные? с чем будут сравниваться результаты вычислений? В него вносить старые данные переменных?

Отправлено: 21:03, 28-03-2012 | #6


Старожил


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

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


Цитата:
какие данные?
Все.
если назовёшь свои переменные my_var_*
то можно отфильтровать set my_var_ > 0.tmp

Отправлено: 21:25, 28-03-2012 | #7


Аватара для VoinLuny

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


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

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


а если в процессе исполнения программы все эти переменные через echo у меня выводятся на экран, то можно их оттуда записать, так?

Отправлено: 21:32, 28-03-2012 | #8


Ветеран


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

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


Цитата VoinLuny:
идет проверка этого, следовательно всегда будет положительный результат, разве нет? »
Нет. Переменная test изменяется до того как переменные a, b и c будут вновь обработаны.

Отправлено: 21:39, 28-03-2012 | #9


Старожил


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

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


Цитата:
через echo у меня выводятся на экран
в виде %переменных% они существуют? — можно

Отправлено: 21:41, 28-03-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле InVariable Скриптовые языки администрирования Windows 4 22-05-2015 20:06
CMD/BAT - [решено] Поиск файла, значения в файле и создания для них переменных popoves Скриптовые языки администрирования Windows 4 29-02-2012 20:59
CMD/BAT - [решено] Как организовать вызов bat с большим количеством переменных и их обработку? seriych Скриптовые языки администрирования Windows 13 27-01-2011 15:48
CMD/BAT - [решено] Изменение переменных в текстовом файле средствами bat men232 Скриптовые языки администрирования Windows 1 29-11-2010 03:30
Любой язык - Проверка сетевых ресурсов в BAT-файле chkur Скриптовые языки администрирования Windows 1 03-12-2008 12:39




 
Переход