Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst If - If mit anschließendem goto funktioniert nicht

Mitglied: Nagus

Nagus (Level 2) - Jetzt verbinden

07.01.2011 um 09:08 Uhr, 4299 Aufrufe, 7 Kommentare

Moin, ich bins schon wieder

Ich kämpfe mit einer doppelten IF abfrage und anschließendem GOTO.

stark abgespeckt sieht das Script so aus:

01.
rem @echo off 
02.
color 1F 
03.
 
04.
set manuell=no 
05.
if /I %manuell% EQU NO goto Var10 
06.
set/A Var10=0 
07.
set/A Var12=1 
08.
 
09.
:Var10 
10.
REM +++++++++++++++++++++++++++++++ Var 10 +++++++++++++++++++++++++++++++++++++++++ 
11.
if /I %manuell%==yes if %Haus10%==0 (goto Var12) 
12.
pause 
13.
goto ende 
14.
 
15.
:Var12 
16.
REM +++++++++++++++++++++++++++++++ Var 12 +++++++++++++++++++++++++++++++++++++++++ 
17.
echo Var12 
18.
pause 
19.
goto ende 
20.
 
21.
:ende
Wenn manuell auf YES gesetzt ist läuft das sauber durch. Sobald ich das jedoch auf NO setze bekomme ich die Fehlermeldung (goto wäre an dieser Stelle syntaktisch nicht verarbeitbar.
Irgendwie mache ich bei der Verschachtelung einen Fehler und ich bekomme den nicht in den Griff. Ich stehe auf den Schlauch. Wenn ich alles für NO optimiere läuft nacher bei YES nix mehr ...

Was ist mein Fehler?

Viele Grüße
Nagus
Mitglied: mathe172
07.01.2011 um 09:40 Uhr
Hallo Nagus!

So wie es ausschaut ist die Variable %Haus10% in Zeile 11 leer - Versuch mal die If-abfrage so zu machen:
01.
If /I "%manuell%"=="yes" if "%Haus10%"==0 (goto :Var12)
Die " bewirken, dass nie eine Seite des Vergleichs leer ist - dann spinnt nämlich das If

Mathe172
Bitte warten ..
Mitglied: pieh-ejdsch
07.01.2011 um 09:55 Uhr
moin Nagus,

...bekomme ich die Fehlermeldung (goto wäre an dieser Stelle syntaktisch nicht verarbeitbar...
da ist entweder die Variable %Haus10% oder %Manuell% nicht gesetzt ich tendiere auf %Haus10%
das mag ja zum Testen in der CMD-Line gehen und keinen syntatischen Fehler hervorrufen, aber in der CMD-Line werden nicht gesetzte Variablennamen mit Prozent drumrum dargestellt siehe Umgang mit Variablen
vom Batch-Parser wird ja erst die komplette Zeile eingelesen daher der Fehler

gestalte Deine Vergleiche mal so
01.
if /i "%manuell%" EQU "NO" goto :Var10 
02.
.... 
03.
if "%Haus10%"=="0" goto :Var12
eine Klammer brauchst Du nur wenn mehrere Anweisung als eine Zeile angesehen werden sollen oder vor der else Klausel

[edit] mathe war schneller ...[/edit]

Gruß Phil
Bitte warten ..
Mitglied: jeb-the-batcher
07.01.2011 um 10:50 Uhr
Moin,

oder mit Delayed Expansion arbeiten, dann klappt es auch ohne Anführungszeichen, egal was oder ob überhaupt was in der Variabel drin ist.
01.
if /i !manuell! EQU NO goto :Var10 
02.
if !Haus10!==0 goto :Var12
Gruß
jeb
Bitte warten ..
Mitglied: Nagus
07.01.2011 um 13:18 Uhr
Erstmal Danke für die Antworten!

Die Zeile
01.
If /I "%manuell%"=="yes" if "%Haus10%"==0 (goto :Var12)
war nicht ganz korrekt sondern richtig wäre gewesen - da habe ich gepennt ...
01.
If /I "%manuell%"=="yes" if "%Var10%"==0 (goto :Var12)
Hat aber kein Ergebnis auf das Script gehabt der Fehler kam noch immer ...

Tatsächlich hat jebs Lösung gezogen
01.
if /I !manuell!==yes if !Haus10!==0 goto Var12
Verstehen tue ich es aber nicht!
Ich habe alle Variablen beim Start mit Werten versehen!

01.
set manuell=no 
02.
... 
03.
REM +++++++++++ eine Einrichtung wird mit 1 aktiviert bsp.: set/a var10=1 +++++++++++ 
04.
set/A var10=0 
05.
set/A var12=0 
06.
set/A var14=0 
07.
... 
08.
:var10 
09.
If /I "%manuell%"=="yes" if "%Var10%"==0 goto :Var12 
10.
 
11.
... 
12.
:var12 
13.
...
was ist daran falsch? Wieso mault er immer goto wäre an dieser Stelle syntaktisch falsch?
grummel

Aber jetzt läuft es - und ich habe noch ein paar andere Fehler gefunden -.-

Deswegen nochmal Danke für Eure Hilfe!

Nagus
Bitte warten ..
Mitglied: miniversum
07.01.2011 um 14:19 Uhr
Du solltest beim zuweisen von Werten darauf achten das diese keine Leerzeichen danach enthalten, sonst gibts Probleme.
set manuell=no -> set "manuell=no"
set/A var10=0 -> set /A "var10=0"

Vergleiche funktionieren "besser" wenn beide Seiten in Anführungszeichen sind:
if "%Var10%"==0 -> if "%Var10%"=="0"
Es können beim == Probleme entstehen wenn Leerzeichen am Anfang oder am Ende enthalten sind. Daher nehme ich für vergleiche immer equ:
If /I "%manuell%"=="yes" -> If /I "%manuell%" equ "yes"

Allgemein:
Ich finde es etwas "schwierig" Variablen und Sprungmarken die gleichen Namen zu geben.

Für die Fehlersuche kannst du ja die Zeile:
If /I "%manuell%"=="yes" if "%Var10%"==0 (goto :Var12)
aufteilen in:
If /I "%manuell%"=="yes" (
if "%Var10%"==0 (
goto :Var12
)
)
Bitte warten ..
Mitglied: Nagus
07.01.2011 um 14:33 Uhr
Hi miniversum,

Danke für die Tipps!

Das die Sprungmarken und Variablen gleich sind ist aus einem Denkfehler heraus entstanden. Dass muss ich irgendwann mal korrigieren - wenn das Script sauber läuft
Viele Grüße
Nagus
Bitte warten ..
Mitglied: jeb-the-batcher
07.01.2011 um 14:39 Uhr
Hallo Nagus,

wie miniversum schon geschrieben hat, sollte man beide Seiten eines Vergleich "gleich" halten.

In deinem Beispiel also if "%Var10%"=="0" (goto :Var12)
weil Zeichenweise verglichen wird. Also hinteher "0" mit "0".
Bei deinem Code wurde aber "0" mit 0 verglichen, was niemals gleich sein kann.

Gruß
jeb
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

"goto" kann syntaktisch an dieser Stelle nicht verarbeitet werden

gelöst Frage von Y4nn1ckBatch & Shell14 Kommentare

Morgen, ich schreibe gerade an einem Zufallsgenerator für die Klasse, also an einem, der auswählt, wer dran kommt. Ich ...

Batch & Shell

Batch Dateiabfrage. Wenn älter als dann goto

gelöst Frage von ZunarasBatch & Shell2 Kommentare

Hallo, ich bin am basteln und möchte in meiner Batch eine Abfrage einbauen. Hier das komplette Skript: Ich möchte ...

Batch & Shell

Wenn XX freier speicher dann goto

gelöst Frage von functionstrutBatch & Shell4 Kommentare

Hallo :-) ich hänge hier irgendwie an einer kleinigkeit und bekomme es nicht hin. ich möchte das wenn 10GB ...

Batch & Shell

If und GOTO in Batch

gelöst Frage von BoogiemanBatch & Shell7 Kommentare

Hallo :) Ich bringe mir zurzeit das Programmieren per JAVA und Batch bei bin nur bei manchem noch nicht ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 23 StundenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 1 TagRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 1 TagSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 2 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Sicherheit
Verbindliche Zustellung per E-Mail?
Frage von ahussainSicherheit18 Kommentare

Hallo allerseits, ein Kunde von mir nutzt intensiv Fax. Hauptgrund: zusammen mit einer Empfangsbestätigung ist eine verbindliche Zustellung gewährleistet. ...

Sonstige Systeme
Wie Normenkataloge im Unternehmen bereit stellen?
Frage von MuzzepuckelSonstige Systeme14 Kommentare

Hallo Kollegen, ich lese schon lange hier mit, nun mein ersrer Beitrag, bzw. Frage. :-) Wir benötigen für unsere ...

Linux Netzwerk
Raspberry Pi 3: WLAN Power save deaktivieren
Frage von nordie92Linux Netzwerk13 Kommentare

Moin moin, mein Raspberry Pi 3 Model B benötigt eine dauerhaft aktive WLAN-Verbindung. Leider bricht die WLAN-Verbindung nach einigen ...

SAN, NAS, DAS
Entscheidung SAN Dell oder HP
Frage von VincorSAN, NAS, DAS13 Kommentare

Hallo, wir wollen uns für unsere Hyper V Umgebung eine neue SAN Anschaffen. Es laufen 30 VM's darunter, DC; ...