malcomxcia
Goto Top

Sprungmarke innerhalb einer If Anweisung ?

Tach'en erst mal ! ! !

Wie der Threadtitel schon sagt. Ist es überhaupt möglich innerhalb einer IF Anweisung mit Sprunkmarken zu arbeiten ?

Gruß und Danke schon mal im voraus
Malcom

Content-ID: 211731

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

Ausgedruckt am: 16.11.2024 um 13:11 Uhr

Biber
Biber 17.07.2013 aktualisiert um 20:29:43 Uhr
Goto Top
Moin malcolmxcia,

du kannst innerhalb einer IF-Anweisung sowohl mit Call:sprungmarke wie auch mit goto:sprungmarke arbeiten.

Ersteres, also ein Call-Aufruf mit Rücksprung kann begrenzt sinnvoll sein.
Ein Verlassen einer IF-Anweisung mit goto:malEbenSpontanWoandershin ist unentschuldbar, aber möglich.

Grüße
Biber
malcomxcia
malcomxcia 17.07.2013 um 20:03:42 Uhr
Goto Top
Erst mal vielen Dank für deine antwort ;)

Also ich habs jetzt einfach nur mal mit der If probiert ohne irgendwelchen Code, und sobald eine Sprungmarke IN DER IF Anweisung vorkommt, gibt er mir einen Syntaxfehler aus.

Schein somit nicht zu klappen.

Trotzdem nochmal Danke
Malcom
Pjordorf
Pjordorf 17.07.2013 aktualisiert um 23:05:52 Uhr
Goto Top
Hallo,

Zitat von @malcomxcia:
gibt er mir einen Syntaxfehler aus.
Erzählst du uns welchen oder müssen wir hier für dich Lotto Spielen? Und, was und wie hast du denn in deiner IF das ganze umgesetzt? Wenn ich es in meiner Batchdatei umsetze geht es schonface-smile Aber mein OS und meine Batch müssen ja nicht aus den gleichen Baum geschnitzt sein wie das was du verwendestface-smile

Gruß,
Peter

[Edit]
hatte es natürlich andersrum verstandenface-sad und daher durchgestrichen.
[/Edit]
Biber
Biber 17.07.2013 um 20:44:04 Uhr
Goto Top
Moin malcomxcia,

okay, so wie du es beschreibst, willst du ja nich innerhalb der IF-Anweisung ein goto/call einstreuen, sondern umgekehrt in eine IF-Anweisung reinspringen.

Hatte ich im ersten Anlauf nicht verstanden.

Also -dein Ansinnen geht auch, allerdings nicht unbedingt hybsch.
Denn du springst dann ja in eine CMD-Zeile rein, die mit einer Klammer-Zu endet - es wird also nur dann kein Syntaxfehler hochpoppen, wenn du es schaffst VOR dem goto :sprungmarke eine Klammer-Auf unterzubringen.

Aber - wenn es nicht gerade um eine Wette oder um eine lustige Einlage beim Sommerfest geht, würde ich mir so einen Programmierstil verkneifen.

Auch wenn es nur ein wehrloser Batch ist.

Grüße
Biber
Endoro
Endoro 17.07.2013 um 21:01:52 Uhr
Goto Top
Hallo,

wenn du so was vor hast:
@ECHO OFF &SETLOCAL
GOTO :LABEL1
IF 1==1 (
	:LABEL1
	ECHO foo
)
dann geht es wohl, bringt aber den ganzen cmd in eine Art undefinierte (=instabile) Lage.
Ich würde unbedingt davon abraten.

lg
malcomxcia
malcomxcia 17.07.2013 um 21:21:09 Uhr
Goto Top
Öhm sorry aber bin nicht so der DOS Freak :D

Wie kann man sich den einen Syntaxfehler genau ausgeben lassen. Bei mir erscheint immer nur Syntaxfehler und das Fenster wird sofort geschlossen ? ? ?
Also dann hier mal mein Beispiel ;)

if defined fullbackup (


echo ---------------------------------------------------------------->>%cd%\log\log_!aktschritt!_backup.log
echo --------------- ERGEBNIS IHRER DATENSICHERUNG ------------------>> %cd%\log\log_!aktschritt!_backup.log
echo ---------------------------------------------------------------->>%cd%\log\log_!aktschritt!_backup.log

if defined difffailed (
echo.
echo ####################  HASH FEHLT UND WIRD NEU ERSTELLT  ########################
echo.
SNAPSHOT %quelle%:   %ziel%!hash!_$computername_$disk.sna -L40000 >>%cd%\log\log_!aktschritt!_backup.log

set errorcode=!errorlevel!
echo !errorcode! >> %cd%\log\log_!hash!_backup.log
set "mailing=TRUE"  
if !errorcode! GEQ 1 goto fehlermail
if !copyusb!==1 (goto usbcopy) else (goto erfolgsmail)

)
echo.
echo #####################  STARTE FULLBACKUP  ##########################
echo.
SNAPSHOT %quelle%:   %ziel%!aktschritt!_$computername_$disk.sna -L40000 >>%cd%\log\log_!aktschritt!_backup.log
set errorcode=!errorlevel!
echo !errorcode! >> %cd%\log\log_!aktschritt!_backup.log
set "mailing=TRUE"  
if !errorcode! GEQ 1 goto fehlermail
if !copyusb!==1 (goto usbcopy) else (goto erfolgsmail)


:usbcopy

)

Und sobald ich innerhalb dieser IF Anweisung das :usbcopy einfüge, gibt es mir den syntaxfehler aus !

Gruß
Malcom
bastla
bastla 17.07.2013 aktualisiert um 22:25:59 Uhr
Goto Top
Hallo malcolmxcia!

  • Was soll denn passieren, wenn %fullbackup% leer ("not defined") ist? Falls eh nix, könntest Du ja die Abfrage umkehren und Dir eine Klammerebene "sparen".
  • Warum soll ":usbcopy" innerhalb des "If defined fullbackup"-Blocks platziert werden - könnte doch per "call" aufgerufen werden und unterhalb des Batch-"Hauptprogramms" stehen?
----
BTW: Aus
echo ---------------------------------------------------------------->>%cd%\log\log_!aktschritt!_backup.log
und ähnlichen Ausgabezeilen würde ich (kürzer und besser lesbar)
>>log\log_!aktschritt!_backup.log echo ----------------------------------------------------------------
machen (da ja %cd% ohnehin der aktuelle Ordner ist, brauchst Du ihn im Pfad nicht mit anzugeben) ...

Grüße
bastla
Endoro
Endoro 17.07.2013 um 23:23:16 Uhr
Goto Top
Zitat von @malcomxcia:
Wie kann man sich den einen Syntaxfehler genau ausgeben lassen. Bei mir erscheint immer nur Syntaxfehler und das Fenster wird
sofort geschlossen ? ? ?

Wenn der Sprung Label die letzte Anweisung vor der schliessenden Klammer ist, gibts einen syntax error.
Bei mir steht noch das echo dahinter face-smile

lg