anmelder
Goto Top

Abbruch wenn Sonderzeichen in SET p Befehl sind z.B. Komma

Hallo,

Die Batch soll bei Eingabe von 1 und 2 weitermachen. Ich habe festgestellt daß Sonderzeichen zu einem Abbruch der Batch führen.

Die ersten 3 Sonderzeichen kann man problemlos austauschen, bei den letzten 3 erfolgt ein Abbruch, vermutlich sind diese Dachmaskierungen falsch.

Wenn ich die Sonderzeichen nicht zuerst austausche und der Anwender gibt z.B. ein Komme ein bricht die Batch bei dem LSS Befehl ab. Den brauche ich aber weil der untere Wert nicht zwingend 0 ist.

Ich könnte natürlich eine Dauerschleife machen und das Programm nur bei 1 oder 2 die Codeschleife aufrufen lassen, das ganze wird mir aber dann durch zu viele Markierungen zu unübersichtlich. Es ist ziemlich groß.

:t
set Eingabe=0
SET /p Eingabe=%Eingabeplatzhalter% Auswahl: 

CALL :Sonderzeichenentfernen


IF "%Eingabe%" EQU "" SET Eingabe=-1  
IF "%Eingabe%" EQU "" goto :t  
IF "%Eingabe%" EQU "0" goto :t  
IF %Eingabe% LSS 0 goto :t
IF  %Eingabe% GTR 2 goto :t


echo 1 und 2 hier

...

GOTO :Ende

:Sonderzeichenentfernen
SET Eingabe=%Eingabe:"=-1%  
SET Eingabe=%Eingabe:,=-1%
SET Eingabe=%Eingabe:;=-1%

IF "%Eingabe%" EQU "^|" SET Eingabe=-1  
IF "%Eingabe%" EQU "^<" SET Eingabe=-1  
IF "%Eingabe%" EQU ^> SET Eingabe=-1  

GOTO :EOF



:Ende

Content-Key: 390662

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

Ausgedruckt am: 29.03.2024 um 06:03 Uhr

Mitglied: rubberman
Lösung rubberman 25.10.2018 um 20:29:02 Uhr
Goto Top
Sonderzeichen im Prompt von SET /P lassen sich genauso handhaben wie Sonderzeichen bei der Zuweisung in einem SET Statement, nämlich mit Anführungszeichen um die Zuweisung.
set /p "x=Prompt mit &<>| "
Wenn du deine Variablen einmal zugewiesen hast, kannst du den Rest mit eingeschalteter verzögerter Variablenerweiterung erledigen, um Nebenwirkungen zu verringern.
setlocal EnebleDelayedExpansion
if "!y!"=="!x!" echo !x!  
Funktioniert dann auch mit allen möglichen Sonderzeichen in der Ausgabe, gänzlich unmaskiert.

Steffen
Mitglied: anmelder
anmelder 02.11.2018 um 18:36:03 Uhr
Goto Top
Ja danke, es hat gedauert weil es noch andere Änderungen gab aber das passt face-smile