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 -----
)
Источник: Умище-то куда девать ?!
прикольно) проверила, работает
Помогите пожалуйста! 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
подробнее...
Где можно найти переводы Task
Не совсем понятно, что Вы имели в виду.. Но как поняла.
task (tɑ:sk)
1. n
подробнее...
Вопрос по циклам for /f в cmd
а так
@echo off
SETLOCAL EnableDelayedExpansion
set inc=0
for /f usebackq %%i in
подробнее...
названия сериала франция.
Нико и его друзья (Studio Sud a.k.a. Dance Academy)
#yaimg347840#
Источник:
подробнее...
Помогите! Мне надо текст на английском про Яну Клочкову!
The Ukraine's Yana Klochkova is one of the outstanding swimmers on the women's circuit, reigning
подробнее...
Рандомизатор чисел в батнике
Случайное число в интервале 0 и 32767 возвращает переменная окружения %random%. С ним можно делать
подробнее...
Слышала вышло в свет продолжение книги Ли Харпер "Убить пересмешника" Как она называется
Американская писательница Харпер Ли, автор романа «Убить пересмешника», обижена и унижена
подробнее...
Мне нужен текст песни "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
подробнее...
CMD. Поиск по шаблону. Нужно в файле найти с строке подстроку по шаблону %d+"x"+%d. Т.е. 2 числа разделённых символом Х.
Ну, например так:
@Echo Off
For /f "tokens=1,2 delims=x" %%i In (num.txt) Do
подробнее...
Как сделать матрицу в командной строке?
1) Открой программу Блокнот.
Скопируй и вставь вот этот текст:
setlocal
подробнее...
Как настроить сканирование Kyocera 1801 на сохранение сканов в конкретную сетевую папку ?
Setting Up the Scan Destination
When saving scan data in a folder other than "My Documents",
подробнее...