set p



Set a

Автор OBOROTEN задал вопрос в разделе Другие языки и технологии

*.bat - Не работает set /a внутри цикла for! и получил лучший ответ

Ответ от Вадим Сухотин[гуру]
Все очень просто. Разгадка содержится в хелпе команды set:
=====
Связывание времени выполнения для переменных среды окружения полезно при обходе
ограничений раннего связывания, которое происходит при первом чтении текстовой
строки, а не при ее выполнении. Следующий пример демонстрирует возникающую
проблему при использовании раннего связывания переменных:
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "%VAR%" == "after" @echo Тело внутреннего оператора сравнения
)
Данное сообщение не будет выводиться, т. к. %VAR% в ОБОИХ выражениях IF
подставляется в момент первого использования в первом IF, в том числе и в тело
первого ветвления IF, которое является составным выражением. В IF внутри
составного выражения в действительности сравниваются значения "before" и
"after", что заведомо ложно. Следующий пример демонстрирует подобную ошибку:
set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%
в данном случае список файлов текущей папки никогда не будет построен. Вместо
этого, значением переменной LIST будет имя последнего найденного файла.
И вновь, это случилось потому, что %LIST% подставляется всего один раз -
в момент обработки выражения FOR, когда список еще пуст.
Фактически, приведенный фрагмент эквивалентен следующему примеру:
for %i in (*) do set LIST= %i
в котором имя последнего найденного файла сохраняется в переменной LIST.
Связывание времени выполнения для переменных среды окружения происходит при
использовании специального символа (восклицательного знака) , обозначающего
проведение сопоставления во время выполнения. Если включена поддержка связывания
времени выполнения, то для достижения ожидаемых результатов приведенные выше
фрагменты должны быть изменены следующим образом:
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo Тело внутреннего оператора сравнения
)
set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%
===
Таким образом, меняем текст таким образом:
@echo off
setlocal EnableDelayedExpansion
FOR /L %%i IN (1,1,9) DO FOR /L %%j IN (1,1,9) DO (
set /a d=%%i*%%j
echo %%i*%%j=!d!
if %%j==9 echo -----
)
Источник: Умище-то куда девать ?!

Ответ от Nadiya[гуру]
прикольно) проверила, работает

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: *.bat - Не работает set /a внутри цикла for!
спросили в Academia Petrina
Помогите пожалуйста! portfolio write a short paragraph describing your house/flat.write about:rooms,special features.
I have two rooms and live in the living room. It's really bright there, all wallscovering are
подробнее...
спросили в Красотища
Где такая красотища?
Тоннель глициний в японском саду цветов Кавати Фудзи, Китакюшу, Япония

Японский городок
подробнее...
спросили в Котор
Нужна cmd-команда, которая будет кидать обновляемый лог-файл в папку с изменением имени файла на текущую дату и время.
в примере привел примерные команды, которые могут понадобиться, надеюсь все очевидно

set
подробнее...
спросили в Другое
Как написать программу на ПК с помошью блокнота
Введите в блокноте команды:

echo off
title calculator
:start
cls
set
подробнее...
спросили в SK Group Гой Чу
Где можно найти переводы Task
Не совсем понятно, что Вы имели в виду.. Но как поняла.

task (tɑ:sk)

1. n
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:

Вопрос по циклам for /f в cmd
а так
@echo off
SETLOCAL EnableDelayedExpansion
set inc=0
for /f usebackq %%i in
подробнее...

названия сериала франция.
Нико и его друзья (Studio Sud a.k.a. Dance Academy)

#yaimg347840#
Источник:
подробнее...
спросили в A M Records
Помогите! Мне надо текст на английском про Яну Клочкову!
The Ukraine's Yana Klochkova is one of the outstanding swimmers on the women's circuit, reigning
подробнее...

Рандомизатор чисел в батнике
Случайное число в интервале 0 и 32767 возвращает переменная окружения %random%. С ним можно делать
подробнее...
спросили в The New York Times
Слышала вышло в свет продолжение книги Ли Харпер "Убить пересмешника" Как она называется
Американская писательница Харпер Ли, автор романа «Убить пересмешника», обижена и унижена
подробнее...
спросили в Scintilla
Мне нужен текст песни "How do you love someone", поет Ashley Tisdale. Не могу найти.
Mаmma never taught me how to love
Daddy never taught me how to feel
Momma never taught
подробнее...

Как сделать матрицу в командной строке?
1) Открой программу Блокнот.
Скопируй и вставь вот этот текст:


setlocal
подробнее...
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*