helldoc
Goto Top

Batch for loop und Variablen

Ich verstehe die Variablen in Batch nicht wirklich, da sie manchmal einfach nicht gesetzt werden und leer bleiben z.B. die Variable text hier:
@echo off
set count=0;
for /f "tokens=*" %%i in (path.txt) do (  
	echo %%i
    	set text[!count!]=%%i
	echo %text[!count!]%
	set /a count+=1
)
echo %text%
echo %text[1]%
pause

Content-Key: 3237052781

Url: https://administrator.de/contentid/3237052781

Printed on: May 2, 2024 at 23:05 o'clock

Member: jjflash
Solution jjflash Jul 02, 2022 at 12:27:40 (UTC)
Goto Top
Hallo.
"setlocal ENABLEDELAYEDEXPANSION"
Ist dein Freund.
Ich spare mir die Bemerkung über die Forensuche.

Gruß Jjfl.
Member: TwistedAir
TwistedAir Jul 02, 2022 at 12:40:34 (UTC)
Goto Top
Hallo helldoc,

dieses Tutorial könnte dir bei deiner Frage helfen: Tutorial zur FOR-Schleife

Grüße
TA
Member: ricardobohner
ricardobohner Jul 02, 2022 at 13:53:59 (UTC)
Goto Top
Dieser Strichpunkt hat doch hier nichts verloren:
set count=0;

Du kannst Variablen die zwichen Prozentzeichen sind nicht aktualiziert vom inneren vom for abrufen. Da du text[#] im for krierst hast und es dann gleich abrufst weiss das Batch Program nicht was "%text[!count!]%" ist da nur die Variable !count! aktualiert ist aber nicht %text[!count!]%. Dieses Kommando:

SetLocal EnableDelayedExpansion

Bewierkt das Variablen in Echtzeit aktualisiert werden aber nur die, die zwischen Ausrufezeichen sind ex: (!count!)

Hier wäre ein beispiel wie du es machen könntest:

@echo off
setlocal EnableDelayedExpansion
set count=0
for /f "tokens=*" %%i in (path.txt) do (  
                                        set /a count+=1
                                        set text[!count!]=%%i                                        
                                       )

for /L %%a in (1,1,%count%) do echo !text[%%a]!

pause
https://i.imgur.com/Ov5VFJJ.gif
Member: helldoc
helldoc Jul 02, 2022 at 17:04:36 (UTC)
Goto Top
ich komme von c++ passiert manchmal automatisch mit dem ";" aber habe nie gemerkt, dass es irgenwas verändert.
Also danke für deine Hilfe face-smile (btw ich will nicht respektlos klingen aber ganz bisschen auf die Rechtschreibung achten könnte man schon)