batch - dodatkowy licznik w pętli for

0

Witam. Otóż ostatnio za punkt honoru postawiłem sobie napisanie jakiejś dobrej gry w batchu. Mam już ładne menu główne, opcje i teraz piszę wczytywanie save'ów. Mam z tym mały problem. W tym fragmencie kodu:

:menu_read_read_startup
set cycle=1
:menu_read_read
echo none> last_key.var
cls
echo  #                                       #
echo ###########################################
echo  #
set i=0
cd ../saves
#nie dziala chuj wie czemu
for /f "tokens=*" %%a in ('type saves.var') do (
	set /a i=%i%+1
	if %cycle%==%i% echo  # %%a #
	if not %cycle%==%i% echo  # %%a
)
cd ../data
echo ###########################################
echo  #                                       #
timeout /nobreak /t 1 > nul
set /p key=<last_key.var
if not %key%==none goto :menu_change
goto :menu_read_read      

zmienna "i" nie zwiększa się o to "1" przy każdej rundce pętli.
Co prawda mogę sobie to napisać inaczej, lecz wtedy nie będzie to ładnie wyglądać dla użytkownika, a na tym chcę się skupić.
Na koniec tylko napiszę że mam nadzieję że napisałem ten temat w odpowiednim dziale.

1

Według http://ss64.com/nt/set.html#expressions powinno być

SET /A i=i+1
SET /A i+=1
0

Dzięki reptile33. Co prawda okazało się że faktycznie nie powinienem używać % do wczytania zmiennej przy użyciu /a. Jednak z jakiegoś powodu w pętli ta zmienna postanowiła się nie wyświetlać zawsze było "0", po wyjściu z pętli natomiast zmienna się wyświetlała tak jakby cały czas była liczona w tej pętli... tak więc nie wiem o co chodzi. Na szczęście kiedyś robiłem jakiś inny projekt w którym miałem nieco inny problem, ale uznałem że wykorzystane tam rozwiązanie też może działać. Okazało się że faktycznie wszystko działa. Tutaj kod jakby ktoś potrzebował kiedyś do czegoś:

:menu_read_read_startup
set cycle=1
:menu_read_read
echo none> last_key.var
cls
echo  #                                       #
echo ###########################################
echo  #
set i=0
cd ../saves
for /f "tokens=*" %%a in ('type saves.var') do (call :saves %%a)
cd ../data
echo ###########################################
echo  #                                       #
timeout /nobreak /t 1 > nul
set /p key=<last_key.var
if not %key%==none goto :menu_change
goto :menu_read_read

:saves
SET /a i=i+1
if %cycle%==%i% echo  # %1 #
if not %cycle%==%i% echo  # %1
goto :eof

1 użytkowników online, w tym zalogowanych: 0, gości: 1