Eckige Klammern in Scripten
Hi und frohe Weihnachten!
Nach längerer Abstinenz habe ich mal wieder eine Frage (ich muss arbeiten ;-D)
Bei der Analyse eines Scriptes bin ich über folgendes gestolpert:
was auch wunderbar funktioniert. Bisher kannte ich nur die Variante
Generell lassen sich die ja nicht als "Ersatz" für "" nutzen, ein Test mit
hat im Gegensatz zu
nicht funktioniert.
Bisher kannte ich diese Klammern nur als Platzhalter in Beschreibungen aber nicht als nutzbare Parameter in einem Script. Da ich nun verwirrt bin, wer kann mich erhellen??
Danke schon mal voraus ...
Nagus
Nach längerer Abstinenz habe ich mal wieder eine Frage (ich muss arbeiten ;-D)
Bei der Analyse eines Scriptes bin ich über folgendes gestolpert:
IF [%UMGEB%]== GOTO ERROR_SCRIPT
was auch wunderbar funktioniert. Bisher kannte ich nur die Variante
IF "%UMGEB%"=="" GOTO ERROR_SCRIPT
Generell lassen sich die ja nicht als "Ersatz" für "" nutzen, ein Test mit
SET [TEST=blablabla]
SET "TEST=blablabla"
nicht funktioniert.
Bisher kannte ich diese Klammern nur als Platzhalter in Beschreibungen aber nicht als nutzbare Parameter in einem Script. Da ich nun verwirrt bin, wer kann mich erhellen??
Danke schon mal voraus ...
Nagus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 225392
Url: https://administrator.de/contentid/225392
Ausgedruckt am: 21.11.2024 um 23:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Nagus!
Zumeist wird eine derartige Schreibweise für die Prüfung von Aufrufparametern (%1, %2, etc) verwendet - in Deinem konkreten Beispiel würde ich eher
verwenden ...
... ansonsten kannst Du allerdings die eckigen Klammern durch (fast) beliebige andere Zeichen ersezten - funktionieren würde also etwa auch:
- diese zusätzlichen Zeichen sorgen einfach nur dafür, dass sich auf keiner Seite des Vergleichs mit
Grüße
bastla
Zumeist wird eine derartige Schreibweise für die Prüfung von Aufrufparametern (%1, %2, etc) verwendet - in Deinem konkreten Beispiel würde ich eher
if not defined UMGEB goto ERROR_SCRIPT
... ansonsten kannst Du allerdings die eckigen Klammern durch (fast) beliebige andere Zeichen ersezten - funktionieren würde also etwa auch:
if -%UMGEB%+==-+ goto ERROR_SCRIPT
if #%UMGEB%#==## goto ERROR_SCRIPT
if _%UMGEB%_==__ goto ERROR_SCRIPT
REM ...
==
"nichts" befindet ...Grüße
bastla
Moin Nagus,
Der Vergleich ist WAHR, WENN die Variable Umgeb nicht gesetzt ist - also leer.
Der Inhalt der Variable darf keine Sonderzeichen enthalten.
Im Gegensatz dazu - den selben Effekt erreichst Du mit Überprüfung der Definition von Variablen der Inhalt ist egall.
Wenn die Variable auf nur gültigen Inhalt geprüft werden sollte also auch keine Leerzeichen oder TAB wurde nur ein Zeichen und keine Umschliessenden verwendet.
Die eckigen Klammern werden als optionale Angaben [nutzbare Parameter] für Scripthilfen verwendet.
Wenn ein Leerzeichen oder andere SonderZeichen in der Variable erwartet werden, dann werden die Anführungszeichen verwendet um die Befehlszeile während der Ausführung stabil zu halten. Zeichenfolge1 sowie Zeichenfolge2 werden als maskierte Werte innerhalb der Anführungszeichen gesehen und nicht als Befehlsteile verwendet.
[OT]
...oh etwas spät:
[/OT]
GrußPhil
Der Vergleich ist WAHR, WENN die Variable Umgeb nicht gesetzt ist - also leer.
IF [%UMGEB%]== GOTO ERROR_SCRIPT
rem ergibt die Zeile im Klartext
IF == GOTO ERROR_SCRIPT
Im Gegensatz dazu - den selben Effekt erreichst Du mit Überprüfung der Definition von Variablen der Inhalt ist egall.
IF not DEFINED Umgeb goto ERROR_SCRIPT
set "Umgeb= "
if %umgeb%.==. goto Error_script
rem wird Aufgelöst zu
if .==. goto Error_script
Die eckigen Klammern werden als optionale Angaben [nutzbare Parameter] für Scripthilfen verwendet.
Wenn ein Leerzeichen oder andere SonderZeichen in der Variable erwartet werden, dann werden die Anführungszeichen verwendet um die Befehlszeile während der Ausführung stabil zu halten. Zeichenfolge1 sowie Zeichenfolge2 werden als maskierte Werte innerhalb der Anführungszeichen gesehen und nicht als Befehlsteile verwendet.
set "Var=Hallo Echo"
if "%Var%"=="" goto Error_Script
[OT]
...oh etwas spät:
[/OT]
GrußPhil