Batch For endlosschleife aber warum? Bitte um hilfe

wannabeapro

Grünschnabel
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.

Code:
@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
 
Zuletzt bearbeitet:
Hi.
Code:
@echo off
:tok = erste Variable für die tokkens
set tok= 1
:tokk = zweite Variable füe die tokkens
set tokk =2
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".
Code:
: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 )
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.
Code:
@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ß
 
Hallo

Danke für deine Hilfe

Allerdings bricht er immer noch innerhalb der ersten Schleife ab.

Code:
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.

Code:
@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
 
Zuletzt bearbeitet:
Hallo

Allerdings bricht er immer noch innerhalb der ersten Schleife ab.

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

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

Code:
@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%
Warum stehen bei den echos ( :mad:echo %Quelle% und :mad:echo %Ziel% ) Doppelpunkte davor?
 

Neue Beiträge

Zurück