# Batch For endlosschleife aber warum? Bitte um hilfe



## wannabeapro (5. September 2007)

*Batch For endlosschleife aber warum? (Variable hochzählen) bitte um hilfe*

Hallo @all

Ich habe mich in den letzten 2 Tagen ein wenig in Batch eingearbeitet bin daher noch ein blutiger Anfänger. Also bitte Entschuldigt wenn es ein blöder Fehler ist.

Ich Versuche für meine Firma ein Automatisiertes script zu Programmieren das sich Pfade aus einer txt Datei holt und diese dann in den Robocopy befehl einsetzt.

Leider Scheitert es bei mir an dem auslesen der Pfade. Ich war soweit das die ersten Beiden ausgelesen wurden und in einer Variable zwischen gespeichert wurden.
Schön und gut nachdem dies Funktioniert hat habe ich versucht die tokkens Variable zu gestallten. Anfangs hat dies auch so halb Funktioniert ^^ war halt bloss eine Endlosschleife und der Wert wurde nicht Hochgezält :-/

Nach erneutem Rumprobieren bricht er nun vor der ersten Schleife ab.


```
@echo off
:tok = erste Variable für die tokkens
set tok= 1
:tokk = zweite Variable füe die tokkens
set tokk =2
:Vriablen für Quelle und Ziel
set Quelle=
set Ziel=
:Sollte das Ende festlegen war aber nur zu test Zwecken
set endee= 19
pause

:schleife soll tok hochzählen
echo schleife
for /L %%a in (%tok%,2,19) do @(
	set tok=%%a 
	if [NOT] "%tok%" == "%endee%" goto schleife2 )

:schleife2 soll tokk hochzählen
pause
echo schleife2
for /L %%b in (%tokk%,2,20) do (
	set tokk=%%b
	goto schleife3 )
:schleife3 soll die eigentliche Pfade auslesen und Später auch Robocopy mit 
:diesen Pfaden starten.
echo schleife 3
@FOR /F "eol=; tokens=%tok%,%tokk%* usebackq delims=, " %%i in ("liste.txt") do @( 
   @set Quelle=%%i 
   @set Ziel=%%j
	:@echo %Quelle%
	:@echo %Ziel%
	@echo %tok%
	@if "%tok%" == "19" goto ende
	@goto schleife)
:ende
@echo %Quelle%
@echo %Ziel%
```

Ich hoffe ihr könnt mir Helfen

Schön Gruß
Wannabeapro


----------



## deepthroat (5. September 2007)

Hi.





wannabeapro hat gesagt.:


> ```
> @echo off
> :tok = erste Variable für die tokkens
> set tok= 1
> ...


Du solltest vermeiden dort Leerzeichen zwischen dem Variablennamen, dem Gleichheitszeichen und dem Wert zu machen. Z.B. ist der Wert von tok nicht "1", sondern " 1".


wannabeapro hat gesagt.:


> ```
> :Vriablen für Quelle und Ziel
> set Quelle=
> set Ziel=
> ...


Wenn in der Hilfe etwas in eckigen Klammern steht, heißt das, dass es optional ist. Man darf nicht wirklich "if [not] x==y" schreiben, man darf "if x==y" oder "if not x==y" schreiben.





wannabeapro hat gesagt.:


> ```
> @FOR /F "eol=; tokens=%tok%,%tokk%* usebackq delims=, " %%i in ("liste.txt") do
> ```


Hier musst du wirklich sicherstellen, das in tok und tokk kein Leerzeichen drin ist.

Gruß


----------



## wannabeapro (5. September 2007)

Hallo

Danke für deine Hilfe

Allerdings bricht er immer noch innerhalb der ersten Schleife ab.


```
for /L %%a in (%tok%,2,19) do @(
	set tok=%%a
	pause
if not "%tok%" == "%endee%" goto :schleife2
```

Bis zur Pause geht er.
Darum vermute ich das an der If Anweisung etwas nicht stimmt :-/
Ich hoffe du oder Ihr wisst noch Rat.
Habe nun alle leerzeichen entfernt.

Das habe ich nun hinbekommen 

nun läuft er auch komplett durch das Programm  was ja schonmal sehr schön ist.
Allerding zählt er mir die Schlüssel variablen "tok" und "tokk" immer noch nicht hoch :-/
Die beläster es immer auf den start werten 1 und 2.


```
@echo off

set tok=1
set tokk =2
set Quelle=
set Ziel=
set endee=19
pause
echo %tok%
:schleife
echo schleife
for /L %%a in (%tok%,2,19) do @(
	set tok=%%a
	pause 
	if not "%tok%" == "endee" goto :schleife2 )

:schleife2 
pause
echo schleife2
for /L %%b in (%tokk%,2,20) do (
	set tokk=%%b
	goto schleife3 )
:schleife3
echo schleife 3
@FOR /F "eol=; tokens=%tok%,%tokk%* usebackq delims=, " %%i in ("liste.txt") do @( 
   @set Quelle=%%i 
   @set Ziel=%%j
	:@echo %Quelle%
	:@echo %Ziel%
	echo %tok%
	if "%tok%" == "19" goto ende
	goto schleife)
:ende
@echo %Quelle%
@echo %Ziel%
```

Gruß
Wannabeapro


----------



## wannabeapro (5. September 2007)

Hey

Hat sich erledigt habs geschaft


----------



## chrysler (12. September 2007)

wannabeapro hat gesagt.:


> Hallo
> 
> Allerdings bricht er immer noch innerhalb der ersten Schleife ab.
> 
> ...



Hast du bei schleife2 den Doppelpunkt ":" entfernt? Dann sollte es gehen.



> ```
> @echo off
> 
> set tok=1
> ...


Warum stehen bei den echos ( echo %Quelle% und echo %Ziel% ) Doppelpunkte davor?


----------

