Erstellen Sie eine Batch-Datei mit folgendem Inhalt:Batch-Scripting: Warum wird diese Bedingung als wahr bewertet?
@echo off
setlocal
echo %1
if [%1] == [] echo hi
Dann ist es aus der Eingabeaufforderung wie folgt:
script.cmd ==
Es ist die folgende Ausgabe:
ECHO is off.
hi
Warum ist das und wie passiert es? Wie kann ich in meinen Batch-Scripts zuverlässiger nach leeren Strings suchen?
Danke.
Das Kernproblem besteht darin, dass das Zeichen '=' ein Token-Trennzeichen wie auch _space_, _tab_, ',' und ';' darstellt, also verhält sich das Skript so, als ob es kein Argument gegeben hätte; Indem man es zwischen "" "setzt, hebt es ihre besondere Bedeutung auf und hält sie wörtlich; Der Zugriff auf die Argumente mit '% ~ 1' entfernt die Anführungszeichen ... – aschipfl