Wie prüfe ich in cmd.exe Variablen auf nachgestellte Leerzeichen?

Antwort vom

**In `cmd.exe` prüfst du trailing spaces am zuverlässigsten, indem du den Originalwert mit einer rechts getrimmten Variante vergleichst; direkte String-Prüfungen sind in Batch dafür unzuverlässig, weil Leerzeichen beim Parsen oft verschwinden.** ## Robuste Prüfung in Batch ```bat @echo off setlocal EnableDelayedExpansion set "var=Text " for /f "tokens=* delims=" %%A in ("!var!") do set "trimmed=%%A" if "!var!"=="!trimmed!" ( echo Keine trailing spaces ) else ( echo Trailing spaces vorhanden ) ``` ## Warum das funktioniert `for /f` entfernt bei dieser Verwendung führende und abschließende Leerzeichen. Wenn sich `!var!` und `!trimmed!` unterscheiden, hatte die Variable am Ende Leerzeichen. ## Wichtiger Unterschied Das ist nur für **normale Spaces** zuverlässig, also ASCII-Leerzeichen. Tabs oder andere Whitespace-Zeichen am Ende musst du separat behandeln. ## Präziser für nur trailing spaces Wenn du nur das Ende prüfen willst und führende Leerzeichen erhalten bleiben sollen, ist diese Variante besser: ```bat @echo off setlocal EnableDelayedExpansion set "var= Text " set "tmp=!var!" :loop if "!tmp:~-1!"==" " ( set "tmp=!tmp:~0,-1!" goto loop ) if "!var!"=="!tmp!" ( echo Keine trailing spaces ) else ( echo Trailing spaces vorhanden ) ``` Der praktische Vorteil: Führende Leerzeichen bleiben hier unangetastet, geprüft wird nur das rechte Ende.

Kategorie: Technik Tags: Cmd Variablen Leerzeichen

Verwandte Fragen

Warum hängt cmd.exe bei der Ausgabeumleitung ein Leerzeichen an?

cmd.exe hängt bei Ausgabeumleitung nicht „einfach so“ ein Leerzeichen an; meist kommt das Leerzeichen aus echo, Variablenersetzung oder der konkreten Syntax vor > – und die U...

Kann ich bei cmd.exe per Ausgabeumleitung CRLF verhindern?

Nein – cmd.exe selbst kann bei normaler Ausgabeumleitung > das Zeilenende nicht auf „nur LF“ umstellen. cmd arbeitet dabei unter Windows-typisch mit CRLF, und das lässt sich...