Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Windows [игнор отключен] [закрыт для гостей] / Скрипт из командной строки. Задать SET... в цикле FOR / 4 сообщений из 4, страница 1 из 1
23.11.2010, 15:20
    #36972133
Скрипт из командной строки. Задать SET... в цикле FOR
Из командной строки 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
23.11.2010, 18:45
    #36972641
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт из командной строки. Задать SET... в цикле FOR
Alexandr N. YarovenkoЧитаю справку по команде SET, вижу, что ее можно использовать в теле цикла:
Код: plaintext
1.
2.
set LIST=
for %i in (*) do set LIST=%LIST% %i

И в чем тогда проблема? Почему не получается выполнить ECHO для текущего значения переменной?Дочитайте справку до конца, в частности, про два варианта подстановки.
Если вкратце, то "set переменная=значение&echo %переменная%", обрабатывается как единое целое и использует то значение переменной, которое было ДО выполнения строки.
...
Рейтинг: 0 / 0
24.11.2010, 11:03
    #36973490
Скрипт из командной строки. Задать SET... в цикле FOR
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
24.11.2010, 14:02
    #36974168
Скрипт из командной строки. Задать SET... в цикле FOR
Решение найдено. Для BAT-файла скрипт выглядит так:
Код: plaintext
1.
2.
setlocal enableDelayedExpansion 
@echo off 
for /L %%i in ( 1   1   3 ) do set var=%%i & echo !var!
Всем спасибо.
...
Рейтинг: 0 / 0
Форумы / Windows [игнор отключен] [закрыт для гостей] / Скрипт из командной строки. Задать SET... в цикле FOR / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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