IF BLock in Batch

Hier dürfen auch unregistrierte Gäste posten.

IF BLock in Batch

Beitragvon Merlin1 » Mo 28. Okt 2013, 13:40

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?
Merlin1
 

Re: IF BLock in Batch

Beitragvon Dekay » Mo 28. Okt 2013, 13:50

:1111
...hier was machen
GOTO End

:2222
...hier was machen
GOTO End
Benutzeravatar
Dekay
Norton Commander
 
Beiträge: 148
Registriert: Mi 15. Jun 2005, 08:32
Wohnort: München

Re: IF BLock in Batch

Beitragvon Merlin1 » Mo 28. Okt 2013, 13:56

Dann würde er aber von 1111 nicht mehr in 3333 gehen
Merlin1
 

Re: IF BLock in Batch

Beitragvon Dosenware » Mo 28. Okt 2013, 15:38

du willst also etwas der Art:

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


oder evtl. etwas übersichtlicher:
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


EDIT: Argh, Das Codetag deaktiviert ja die anderen Tags..
Zuletzt geändert von Dosenware am Mo 28. Okt 2013, 16:33, insgesamt 2-mal geändert.
Benutzeravatar
Dosenware
DOS-Gott
 
Beiträge: 3529
Registriert: Mi 24. Mai 2006, 19:29

Re: IF BLock in Batch

Beitragvon Merlin1 » Mo 28. Okt 2013, 15:49

Kannst du den Code nochmals posten. Durch die vielen Tags ist der Code total unleserlich.
Danke
Merlin1
 

Re: IF BLock in Batch

Beitragvon Dosenware » Mo 28. Okt 2013, 16:32

Tags entfernt - ist wie oben geschrieben Pseudocode, der sich direkt in Batchcode übersetzen lässt
Benutzeravatar
Dosenware
DOS-Gott
 
Beiträge: 3529
Registriert: Mi 24. Mai 2006, 19:29

Re: IF BLock in Batch

Beitragvon Merlin1 » Mo 28. Okt 2013, 16:49

Das scheint zu funktionieren.

Danke
Merlin1
 

Re: IF BLock in Batch

Beitragvon freecrac » Di 29. Okt 2013, 08:16

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

Für eine Verzeichnissabfrage müsste doch ein "\NUL" angehängt werden: "IF EXIST C:\TEMP\NUL"
Und anstelle der zweiten Abfrage kann dann ein: "Goto MakeTmp" auch genügen.

: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?

Dann überspringe doch einfach mit Goto zum Ende.

Dirk
freecrac
DOS-Guru
 
Beiträge: 861
Registriert: Mi 21. Apr 2010, 10:44
Wohnort: Hamburg Horn


Zurück zu Gästeforum

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste