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

Frage Entwicklung Batch & Shell

GELÖST

Eckige Klammern in Scripten

Mitglied: Nagus

Nagus (Level 2) - Jetzt verbinden

27.12.2013, aktualisiert 12:54 Uhr, 1974 Aufrufe, 6 Kommentare

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:

01.
IF [%UMGEB%]==[] GOTO ERROR_SCRIPT
was auch wunderbar funktioniert. Bisher kannte ich nur die Variante

01.
IF "%UMGEB%"=="" GOTO ERROR_SCRIPT
Generell lassen sich die [] ja nicht als "Ersatz" für "" nutzen, ein Test mit

01.
SET [TEST=blablabla]
hat im Gegensatz zu

01.
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
Mitglied: Endoro
LÖSUNG 27.12.2013, aktualisiert um 12:54 Uhr
Hey,
beim Vergleichen mit poison characters helfen nur Zollzeichen:
01.
if [&&]==[&&] echo true
gruss.
Bitte warten ..
Mitglied: bastla
LÖSUNG 27.12.2013, aktualisiert um 12:54 Uhr
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
if not defined UMGEB goto ERROR_SCRIPT
verwenden ...

... ansonsten kannst Du allerdings die eckigen Klammern durch (fast) beliebige andere Zeichen ersezten - funktionieren würde also etwa auch:
01.
if -%UMGEB%+==-+ goto ERROR_SCRIPT 
02.
if #%UMGEB%#==## goto ERROR_SCRIPT 
03.
if _%UMGEB%_==__ goto ERROR_SCRIPT 
04.
REM ...
- diese zusätzlichen Zeichen sorgen einfach nur dafür, dass sich auf keiner Seite des Vergleichs mit == "nichts" befindet ...

Grüße
bastla
Bitte warten ..
Mitglied: Nagus
27.12.2013 um 12:57 Uhr
Hi Bastla,

Danke! Wie immer schneller als der Schall und vollständig!

Gruß
Nagus
Bitte warten ..
Mitglied: Nagus
27.12.2013 um 12:58 Uhr
Danke Endoro!
Bitte warten ..
Mitglied: pieh-ejdsch
LÖSUNG 27.12.2013, aktualisiert 18.02.2014
Moin Nagus,

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
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.
IF not DEFINED Umgeb goto ERROR_SCRIPT
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.
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
Bitte warten ..
Mitglied: Nagus
18.02.2014 um 21:09 Uhr
Auch von mir etwas spät: Danke! ;-D
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Mit Powershell Daten löschen, die eckige Klammern im Namen haben
gelöst Frage von arduinoBatch & Shell2 Kommentare

Moin Eckige Klammern werden als Wildcards verwendet. Wie kann ich Powershell beibringen, dass es diese als normale Dateien behandelt? ...

Batch & Shell
Eckiege klammern mit batch umleiten
gelöst Frage von DomiZone1Batch & Shell4 Kommentare

Hallo Leute Ich habe aktuell das Problem ich möchte nicht immer den standard HTML kram neu eingeben muss um ...

Batch & Shell
CMD: programfiles Klammer wird nicht angezeigt
gelöst Frage von teslajrBatch & Shell6 Kommentare

Hallo Leute bei Windows 7 wird die letzte Klammer nicht angezeigt und somit ist der Pfad nicht zu nutzen. ...

PHP
Irgendwo im PHP fehlt ne Klammer
Frage von 91863PHP14 Kommentare

Hallo, im Webshop verzieht es mir sobald ich in der Administration eine Datei aufrufem das gesamt Design. Weiss wer ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 3 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 3 TagenSicherheit12 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall10 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS9 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen9 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...

Windows Netzwerk
Zugriff auf den Desktop Ordner eines anderen Rechners in der gleichen Domäne
gelöst Frage von JensNomaWindows Netzwerk6 Kommentare

Guten Abend, ich war neulich mit unserem Admin am Tisch gesessen. Er an seinem Notebook angemeldet mit dem Domänen-Admin, ...