borsti87
Goto Top

BATCH - IF Variable leer set Variable

Hallo,

ich will überprüfen ob eine variable leer ist und wen das der fall ist in die Variable einen String schreiben

 IF "%TITLE% "=="" set TITLE=Unbenannt


doch irgendwie funktioniert das nicht, kann mir wer helfen?

Gruß

borsti87

Content-Key: 119553

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

Printed on: April 28, 2024 at 22:04 o'clock

Member: TsukiSan
TsukiSan Jul 01, 2009 at 17:22:49 (UTC)
Goto Top
Hallo borsti87,

setze doch Unbenannt in Anführungszeichen
"Unbenannt"

Gruß
Tsuki
Member: Hubert.N
Hubert.N Jul 01, 2009 at 17:25:49 (UTC)
Goto Top
IF %TITLE% == %TITLE% ...
- weil wenn das nicht definiert ist, bekommst du als Ausgabe die Eingabe face-smile
Member: TsukiSan
TsukiSan Jul 01, 2009 at 17:37:58 (UTC)
Goto Top
@hubertn

und das kommt ja auch noch dazu

Tsuki
Member: miniversum
miniversum Jul 01, 2009 at 17:38:24 (UTC)
Goto Top
Das Lerzeichen sit zuviel:
IF "%TITLE%" equ "" set TITLE=Unbenannt
oder etwas schöner:
IF not defined TITLE set TITLE=Unbenannt
Member: Snowman25
Snowman25 Jul 01, 2009 at 20:48:04 (UTC)
Goto Top
noch einfacher ist es, indem man immer einen festen buchstaben an variablen anbindet. Dann lässt sich auch einfach prüfen ob sie leer ist; denn dann ist nur der Buchstabe da
Beispiel:

set /p test =
if X%test%X == X%test%X (
Echo ok
goto eof
) else (
Echo nicht ok
)

:eof

In dieser batch wirst du normalerweise nie auf nicht ok kommen
Member: bastla
bastla Jul 01, 2009 at 22:36:03 (UTC)
Goto Top
@Snowman25
In dieser batch wirst du normalerweise nie auf nicht ok kommen
... weil die Zeile 2 so ziemlich sinnfrei ist - gemeint war wohl:
if not X%test%X==XX (
und auch diese Schreibweise finde ich nicht einfacher als das von miniversum vorgeschlagene
if not defined TITEL ...
Grüße
bastla
Member: Biber
Biber Jul 01, 2009 at 23:10:26 (UTC)
Goto Top
@bastla
Wobei ich, um Deine harte Aussage ...
... weil die Zeile 2 so ziemlich sinnfrei ist
etwas abzumildern, noch ergänzen möchte:

Die Zeile 1 ist noch viel sinnfreier.

a) Ein "Set /p test =" wartet nach Start des Batches ...ohne dass der Batch-Starter irgendwie den Grund erkennen kann.
Wenn es ein unbefangener Anwender ist, drückt er nach geraumer Zeit irgendeine Taste, um zu sehen, ob der Computer noch reagiert.
Wenn es ein erfahrener Windows-Anwender ist, dann drückt er sofort Strg-Alt-Entf und erlebt nie, wie der Batch weitergeht.

b) Falls wir den 3%-Wahrscheinlichkeitsfall haben, dass tatsächlich nur ENTER gedrückt wurde...

Okay, dann ist jetzt die Variable "%test %" [mit Leerzeichen am Ende] un-definiert. aber die wird ja nie geprüft...

Grüße
Biber

P.S. Weiter als bis Zeile 2 habe ich aber auch noch nicht gelesen... ich musste so lachen... face-wink
Member: Snowman25
Snowman25 Jul 02, 2009 at 06:43:01 (UTC)
Goto Top
nagut...
set /p test = Bitte Wert angeben
if X%test%X == XX (
    Echo Kein wert angegeben
) else (
    Echo Wert %test% angegeben
)

der obrige Code war ein Snippet aus einer Paswort-batch von mir.
Nur schnell verändert und dann hat was gefehlt.
Entschuldigt den Fehler