powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Скрипт из командной строки. Задать SET... в цикле FOR
4 сообщений из 4, страница 1 из 1
Скрипт из командной строки. Задать SET... в цикле FOR
    #36972133
Из командной строки CMD нужно определенным образом форматировать цифры: 1 заменить на 0001, 15 - на 0015, 125 на 0125 и т.п. Решил, что заготовкой будет цикл FOR, в котором переменная меняет значение в зависимости от шага итерации. Но ничего не получилось, в результате начал писать тестовые скрипты, чтобы найти проблему. Например, так:
Код: plaintext
1.
SET VARIABLE=
FOR /L %i IN ( 1   1   3 ) DO (SET VARIABLE=%i) & (ECHO %VARIABLE%)
Я ожидаю такого результата:
Код: plaintext
1.
2.
3.
 1  
 2  
 3  
Получаю результат:
Код: plaintext
1.
2.
3.
%VARIABLE% 
%VARIABLE% 
%VARIABLE% 

Еще раз пишу:
Код: plaintext
FOR /L %i IN ( 1   1   3 ) DO (SET VARIABLE=%i) & (ECHO %VARIABLE%)
Результат:
Код: plaintext
1.
2.
 3  
 3  
 3 

Читаю справку по команде SET, вижу, что ее можно использовать в теле цикла:
Код: plaintext
1.
2.
set LIST=
for %i in (*) do set LIST=%LIST% %i

И в чем тогда проблема? Почему не получается выполнить ECHO для текущего значения переменной?
...
Рейтинг: 0 / 0
Скрипт из командной строки. Задать SET... в цикле FOR
    #36972641
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexandr N. YarovenkoЧитаю справку по команде SET, вижу, что ее можно использовать в теле цикла:
Код: plaintext
1.
2.
set LIST=
for %i in (*) do set LIST=%LIST% %i

И в чем тогда проблема? Почему не получается выполнить ECHO для текущего значения переменной?Дочитайте справку до конца, в частности, про два варианта подстановки.
Если вкратце, то "set переменная=значение&echo %переменная%", обрабатывается как единое целое и использует то значение переменной, которое было ДО выполнения строки.
...
Рейтинг: 0 / 0
Скрипт из командной строки. Задать SET... в цикле FOR
    #36973490
Basil A. SidorovЕсли вкратце, то "set переменная=значение&echo %переменная%", обрабатывается как единое целое и использует то значение переменной, которое было ДО выполнения строки.


Действительно, это так. Я не до конца осознал возможности запуска командного процессора в режиме связывания времени выполнения:

Код: plaintext
cmd /v
Тестовый код выглядит так:
Код: plaintext
1.
echo off
for /L %i in ( 1   1   3 ) do set var=%i & echo !var!
Результат:
Код: plaintext
1.
2.
 1 
 2 
 3 
То есть, то что надо. Но, в конце концов, этот скрипт я помещу в BAT-файл, и как из BAT-файла перевести сеанс в режим /v ?
...
Рейтинг: 0 / 0
Скрипт из командной строки. Задать SET... в цикле FOR
    #36974168
Решение найдено. Для BAT-файла скрипт выглядит так:
Код: plaintext
1.
2.
setlocal enableDelayedExpansion 
@echo off 
for /L %%i in ( 1   1   3 ) do set var=%%i & echo !var!
Всем спасибо.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / Скрипт из командной строки. Задать SET... в цикле FOR
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]