findstr testet, ob andere Zeichen enthalten sind, danke für den angegebenen Batch

findstr testet, ob andere Zeichen enthalten sind, danke für den angegebenen Batch

Ich habe ein Batch-Skript, in dem Benutzereingaben erforderlich sind. Ich möchte jedoch nur zulassen a-z, 0-9, @#$].~+-=_/\:;. Gibt es eine Möglichkeit, mit findstr sicherzustellen, dass keine anderen Zeichen als diese vorhanden sind? Ich habe die Dokumentation überprüft und kann keine Möglichkeit finden, dies zu erreichen.

Was ich habe:

@echo off
echo Enter Username:
set /p usr=">"

Antwort1

Verwenden Sie den Standard-Regex-Modus von findstr und verwenden Sie eine [Zeichenklasse], um Zeichen mit einer besonderen Bedeutung mit einem Backslash zu maskieren.

:: Q:\Test\2018\12\07\SU_1381655.cmd
@Echo off
:loop
set /p "input=Enter data(a-z, 0-9, @#$].~+-=_/\:;.:)"

Echo:%input%|findstr /I "^[a-z0-9@#$\]\.~+\-=_\/\\:;]*$" >NUL 2>&1 && (
   echo checked input ok
) || (
   echo invalid input
)
goto :loop

Überprüfen Sie selbst, ob ich alle Zeichen richtig habe.
Wenn nur Kleinbuchstaben beabsichtigt waren, entfernen Sie den Schalter /i.


Da mögliche poisenousZeichen <|>&ohne Anführungszeichen wiedergegeben werden, können sie den Stapel beschädigen.

verwandte Informationen