IF BLock in Batch
IF BLock in Batch
Hallo zusammen,
Ich möchte eine Batch erstellen mit verschiedenen verästelungen z.B.
If Exist c:\Temp Goto Tmp
IF Not Exist C:\Temp Goto MakeTmp
:Tmp
...hier was machen
Goto 1111
Goto 3333
Goto End
:MakeTmp
...hier was machen
Goto 2222
Goto 3333
Goto End
:1111
...hier was machen
:2222
...hier was machen
:3333
...hier was machen
:End
pause
Es wird aber jedesmal 1111, 2222, und 3333 durchlaufen. Wie bekomme ich das hin, das nur die vorgegebenen Sprünge durchlaufen werden?
Ich möchte eine Batch erstellen mit verschiedenen verästelungen z.B.
If Exist c:\Temp Goto Tmp
IF Not Exist C:\Temp Goto MakeTmp
:Tmp
...hier was machen
Goto 1111
Goto 3333
Goto End
:MakeTmp
...hier was machen
Goto 2222
Goto 3333
Goto End
:1111
...hier was machen
:2222
...hier was machen
:3333
...hier was machen
:End
pause
Es wird aber jedesmal 1111, 2222, und 3333 durchlaufen. Wie bekomme ich das hin, das nur die vorgegebenen Sprünge durchlaufen werden?
Re: IF BLock in Batch
:1111
...hier was machen
GOTO End
:2222
...hier was machen
GOTO End
...hier was machen
GOTO End
:2222
...hier was machen
GOTO End
Re: IF BLock in Batch
Dann würde er aber von 1111 nicht mehr in 3333 gehen
Re: IF BLock in Batch
du willst also etwas der Art:
If 1 goto 1
if 2 goto 2
if 3 goto 3
machen?
warum nicht folgende Variante:
oder evtl. etwas übersichtlicher:
EDIT: Argh, Das Codetag deaktiviert ja die anderen Tags..
If 1 goto 1
if 2 goto 2
if 3 goto 3
machen?
warum nicht folgende Variante:
Code: Alles auswählen
;Pseudocode
If Not 1 goto IN1
;Anweisungen für If 1
goto I1
:IN1
;Anweisungen für If Not 1
:I1
If Not 2 goto IN2
;Anweisungen für If 2
goto I2
:IN2
;Anweisungen für If Not 2
:I2
If Not 3 goto IN3
;Anweisungen für If 3
goto I3
:IN3
;Anweisungen für If Not 3
:I3
....
Code: Alles auswählen
;Pseudocode
If 1 goto 1
goto N1 ;gehe zu Nicht 1
:RET1 ;Return 1 (Rücksprung 1)
if 2 goto 2
goto N2 ;gehe zu Nicht 2
:RET2 ;Return 2 (Rücksprung 2)
if 3 goto 3
goto N3 ;gehe zu Nicht 3
:RET3 ;Return 3 (Rücksprung 3)
...
goto END
:1
;Anweisungen für 1
goto RET1
:N1
;Anweisungen für Nicht 1
goto RET1
...
:end
Zuletzt geändert von Dosenware am Mo 28. Okt 2013, 16:33, insgesamt 2-mal geändert.
Re: IF BLock in Batch
Kannst du den Code nochmals posten. Durch die vielen Tags ist der Code total unleserlich.
Danke
Danke
Re: IF BLock in Batch
Tags entfernt - ist wie oben geschrieben Pseudocode, der sich direkt in Batchcode übersetzen lässt
Re: IF BLock in Batch
Das scheint zu funktionieren.
Danke
Danke
Re: IF BLock in Batch
Für eine Verzeichnissabfrage müsste doch ein "\NUL" angehängt werden: "IF EXIST C:\TEMP\NUL"Merlin1 hat geschrieben:Hallo zusammen,
Ich möchte eine Batch erstellen mit verschiedenen verästelungen z.B.
If Exist c:\Temp Goto Tmp
IF Not Exist C:\Temp Goto MakeTmp
Und anstelle der zweiten Abfrage kann dann ein: "Goto MakeTmp" auch genügen.
Dann überspringe doch einfach mit Goto zum Ende.:Tmp
...hier was machen
Goto 1111
Goto 3333
Goto End
:MakeTmp
...hier was machen
Goto 2222
Goto 3333
Goto End
:1111
...hier was machen
:2222
...hier was machen
:3333
...hier was machen
:End
pause
Es wird aber jedesmal 1111, 2222, und 3333 durchlaufen. Wie bekomme ich das hin, das nur die vorgegebenen Sprünge durchlaufen werden?
Dirk