Проверка изменения переменных в *.bat файле
У меня есть батник в котором зациклен процесс расчетов. Мне нужно, чтобы он повторялся до тех пор, пока эти расчеты приводят к изменениям результатов (чтобы несколько сгладить О_о впечатление от моего описания скажу, что пишу в батнике алгоритм кластеризации по методу k-means). Собственно вопрос: Как мне проверить происходит ли изменение переменной x после расчета?
Т.е. Как сравнить переменную до и после? Сложность в том, что желательно делать это не по одной переменной, а группами или сразу все, т.к. переменных много. Помогите пожалуйста.
|
если много, то наверно проще всего вывести все в файл,
после расчета – в другой файл, и сравнить
|
Дело в том, что в зависимости от того, будет меняться или нет, батник должен либо продолжать вычисления либо завершиться. В этом то и проблема :(
ну и потом как много? 9 штук. Просто сравнивать их по одной ну уж очень неудобно. И не совсем понятно как. Я додумался только после каждого круга расчетов переменную переобозначать и сравнивать старое обозначение с новым...
|
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" какие-то расчеты.
|
Код:
:loop
set > 0.tmp
rem вычисления
set > 1.tmp
fc 0.tmp 1.tmp >nul ||goto :loop
|
Foreigner, не могли бы Вы пояснить, что делает? Что она задает переменную тест со значением abc я понимаю, но что она из себя представляет в блоке IF? Ведь мы её и так задаем abc а тут
Цитата:
Цитата Foreigner
if "%test%"=="%a%%b%%c%" »
|
идет проверка этого, следовательно всегда будет положительный результат, разве нет?
kiripanda, тут тоже вопрос.
в этом временном файле будут какие данные? с чем будут сравниваться результаты вычислений? В него вносить старые данные переменных?
|
Все.
если назовёшь свои переменные my_var_*
то можно отфильтровать set my_var_ > 0.tmp
|
а если в процессе исполнения программы все эти переменные через echo у меня выводятся на экран, то можно их оттуда записать, так?
|
Цитата:
Цитата VoinLuny
идет проверка этого, следовательно всегда будет положительный результат, разве нет? »
|
Нет. Переменная test изменяется до того как переменные a, b и c будут вновь обработаны.
|
Цитата:
через echo у меня выводятся на экран
|
в виде %переменных% они существуют? — можно
|
Спасибо, в этом вопросе вроде разобрался!
Осталось конечно ещё дополна, но их описать в режиме онлайн будет сложно. Точно не сейчас. Доброй ночи!
|
Время: 18:43.
© OSzone.net 2001-