1 (изменено: trash50, 2014-01-04 13:09:18)

Тема: CMD/BAT: Организовать СТЕК в .CMD/.BAT

День добрый,

Прошу подсказать как организовать стек (в оперативной памяти) в .CMD



P.S. Понимаю, что можно присваивать данные в хвост одной переменной (через разделитель) а потом выбирать их через FOR (до исчерпания переменной). Вот толко при эксперементах (/при изучении)  FOR постоянно наталкиваюсь на проблемы начиная с синтаксиса...

2

Re: CMD/BAT: Организовать СТЕК в .CMD/.BAT

массивы

( 2 * b ) || ! ( 2 * b )

3

Re: CMD/BAT: Организовать СТЕК в .CMD/.BAT

Прошу подсказать как организовать стек (в оперативной памяти) в .CMD

«setlocal»/«endlocal». Не помню только допустимый уровень вложений.

4

Re: CMD/BAT: Организовать СТЕК в .CMD/.BAT

alexii пишет:

«setlocal»/«endlocal»...

Спасибо!

alexii пишет:

... Не помню только допустимый уровень вложений.

...
30
''Достигнут уровень рекурсии, максимально возможный для команды SETLOCAL''.

Работает:

:: 
@echo off
@set sent.users=Masha
@set softsend=sent.exe /u:%sent.users%
setlocal enabledelayedexpansion
chcp 866 >nul 2>&1

::  инициализировать 10 переменных
for /l %%i in ( 0, 1, 9 ) do (
    @setlocal 
    @set /a arr_=%%i
    @echo !arr_!
)
::  отобразить 10 переменных
for /l %%i in ( 0, 1, 9 ) do (
    @echo !arr_!
    @endlocal
)
@pause
endlocal

Результат:

+ открыть спойлер

0
1
2
3
4
5
6
7
8
9
9
8
7
6
5
4
3
2
1
0
Для продолжения нажмите любую клавишу . . .

5 (изменено: trash50, 2014-01-05 04:16:10)

Re: CMD/BAT: Организовать СТЕК в .CMD/.BAT

Еще есть SHIFT

Но тут "на грабли наступил", не работает:

:: @echo off 
setlocal enableextensions enabledelayedexpansion

::  инициализировать 8 переменных
for /l %%i in ( 9, -1, 1 ) do (
    set %9=%%i
    SHIFT /2
    echo %9 - %%i
)
::  отобразить 8 переменных
    @echo %2 %3 %4 %5 %6 %7 %8 %9

@pause
endlocal

Как присвоить: set %9=
как то перезапустить .cmd ?

6

Re: CMD/BAT: Организовать СТЕК в .CMD/.BAT

trash50 пишет:

Как присвоить: set %9=

Извиняюсь, если я что-то перепутал, но по-моему переменные с именами %0, %1, …, %9 — предназначены только для работы с аргументами, переданными в BAT-файл, значения этих переменных можно вроде только считывать, но не присваивать самому.