PDA

Показать полную графическую версию : [решено] Элементы "массива" в цикле


TonyMil
21-01-2024, 08:40
В переменных name1, name2, ... name9 хранятся некие текстовые значения. Если их выводить в цикле "for /L", всё работает:
for /L %%i in (1,1,9) do echo !name%%i!

А если я пытаюсь выводить их в цикле "for /F", заведя собственный счётчик, то не работает:
set dn=0
for /F %%i in (basedate.log) do (
set /a dn+=1
echo !name%dn%! %%i
)

Что я делаю не так? И как сделать, чтобы работало?

Заранее спасибо за помощь.

Foreigner
21-01-2024, 14:19
Заканчивайте себя мучать батниками, вы блоке for устанавливаете переменную и прямо в нем же пытаетесь ее вывести


set dn=0
for /F %%i in (basedate.log) do (
set /a dn+=1
call echo %%name!dn!%% %%i
)

TonyMil
21-01-2024, 15:16
Заканчивайте себя мучать батниками »
Я пытаюсь начать ими наслаждаться...

call echo %%name!dn!%% %%i »
А где можно почитать хороший разбор про все эти "%", "%%" и "!"? А то пытаюсь их применять на интуитивном уровне и чувствую, что интуиция меня подводит. Хотелось бы базовых знаний...

Foreigner
21-01-2024, 15:27
А где можно почитать хороший разбор про все эти »

Не знаю, в свое время читал только справку и форумы.


set /?
setlocal /?


Я пытаюсь начать ими наслаждаться... »

Мазохизм тоже вызывает наслаждение, особенно при работе с текстом. Лучше изучайте PowerShell или другие ЯП.

TonyMil
21-01-2024, 15:33
Лучше изучайте PowerShell или другие ЯП. »
PS по условиям задачи не прокатывает. С другими ЯП всё в порядке, но они тоже не подходят. ;) Там всё непросто с требованиями заказчика.

Огромное спасибо! Всё заработало.

YuS_2
21-01-2024, 21:19
А где можно почитать хороший разбор про все эти "%", "%%" и "!"? А то пытаюсь их применять на интуитивном уровне и чувствую, что интуиция меня подводит. »
А.В. Попов Командная строка и сценарии Windows




© OSzone.net 2001-2012