anmelder
Goto Top

Batchabbruch bei IF EQU wenn Variable Leerzeichen enthält

Hallo,

Nach Ausgabe der 2 bricht dieser Code ab. Das Ziel ist es, festzustellen, ob test 2 Anführungszeichen enthält: ""
Der Fehler tritt immer dann auf wenn test ein Leerzeichen enthält und das kommt auch vor.
Wie kann die Anführungszeichen richtig prüfen?


set test=dd gg
echo 1
IF "%test%" EQU "" ja1  
echo 2
IF %test% EQU "" echo ja2  
echo 3

Content-Key: 391527

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

Printed on: April 16, 2024 at 20:04 o'clock

Member: rubberman
rubberman Nov 02, 2018 at 18:09:02 (UTC)
Goto Top
Was meinst du mit
Das Ziel ist es, festzustellen, ob test 2 Anführungszeichen enthält: ""
Ob der Variableninhalt einen in Anführungszeichen gestellten String enthält, oder ob irgendwo im Variableninhalt Anführungszeichen vorkommen, oder ob der Variableninhalt nur aus 2 Anführungszeichen besteht?

Steffen
Member: anmelder
anmelder Nov 02, 2018 at 18:22:56 (UTC)
Goto Top
Ob test einen String enthält:

set test=""  
IF %test% EQU "" echo ja2  

Ja soll bei diesem Beispiel ausgegeben werden.
Mitglied: 137443
137443 Nov 02, 2018 updated at 18:38:58 (UTC)
Goto Top
Zitat von @anmelder:

Ob test einen String enthält:

set test=""  
> IF %test% EQU "" echo ja2  
> 

Ja soll bei diesem Beispiel ausgegeben werden.
set "test="  
IF "%test%" EQU "" echo Test ist leer  
Gruß l.
Member: anmelder
anmelder Nov 02, 2018 at 18:57:55 (UTC)
Goto Top
Diese Lösung ist noch nicht richtig. Das Beispiel entspricht set test="" . Ich möchte aber abfragen ob die 2 Anführungsstriche in der Variable gespeichert sind und sonst nichts.

Beispiel=

SET test=d
SET test=
SET

Die Variable test wird nicht angezeigt, sie wurde restlos gelöscht.

SET test=d
SET test=""  
SET


Die Variable test wird angezeigt, sie existiert und enthält Anführungszeichen. Sie sind also nicht identisch. Und ich möchte beide Zustände abfragen können.
Member: rubberman
rubberman Nov 02, 2018 updated at 19:13:27 (UTC)
Goto Top
Same procedure as last time, James face-wink
Zitat von @rubberman:
Wenn du deine Variablen einmal zugewiesen hast, kannst du den Rest mit eingeschalteter verzögerter Variablenerweiterung erledigen, um Nebenwirkungen zu verringern.

@echo off &setlocal
set test=""  
set quotes=""  

setlocal EnableDelayedExpansion
echo 1
IF not defined test echo ja1
echo 2
IF "!test!" EQU "!quotes!" echo ja2  
echo 3
endlocal

pause
Steffen