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?
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 391527
Url: https://administrator.de/forum/batchabbruch-bei-if-equ-wenn-variable-leerzeichen-enthaelt-391527.html
Ausgedruckt am: 13.04.2025 um 05:04 Uhr
5 Kommentare
Neuester Kommentar
Was meinst du mit
Steffen
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

Zitat von @anmelder:
Ob test einen String enthält:
Ja soll bei diesem Beispiel ausgegeben werden.
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
Same procedure as last time, James 
Steffen
Zitat von @rubberman:
Wenn du deine Variablen einmal zugewiesen hast, kannst du den Rest mit eingeschalteter verzögerter Variablenerweiterung erledigen, um Nebenwirkungen zu verringern.
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