igriefu1
Goto Top

Input muss mindestens 8 Zeichen lang sein, wie schreibe ich die if Bedingung

Hallo,

ich bin ein purer Neuling aber möchte was komplexes machen. Ich möchte ein Befehl machen, der den %input% überprüft auf die Länge. Es handelt sich um ein WLAN Passwort. Es muss min. 8 Buchstaben lang sein.Hier das volle Skript Hier ist der Teilcode :

:password1
cls
set/p input=Neues Passwort (min. 8 Buchstaben): 
REM Hier muss der Befehl hin !
@echo off
netsh wlan set hostednetwork mode=allow
netsh wlan set hostednetwork keyUsage=persistent
netsh wlan set hostednetwork key=%input%
cls
echo         Passwort erfolgreich geändert !
timeout /t 3
goto config1

Wenn der %input% GEQ 8 ist dann muss

echo         Passwort erfolgreich geändert !


geschehen.

Sonst

echo        Passwort muss mindestens 8 Zeichen lang sein !

Ich bin euch sehr dankbar, bitte erklärt auch, was ihr schreibt. Ich lerne ja ;)

MFG,

Max

Content-Key: 306315

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

Printed on: April 24, 2024 at 15:04 o'clock

Member: Sheogorath
Sheogorath Jun 05, 2016 updated at 15:25:35 (UTC)
Goto Top
Moin,

das ist in Batch ziemlich umständlich :/

Hier ein paar externe Beispiele:
http://www.dostips.com/?t=Function.strLen
https://stackoverflow.com/questions/5837418/how-do-you-get-the-string-le ...
https://stackoverflow.com/questions/12731477/how-to-check-if-a-string-ha ...

Gerade der letzte Beitrag ist eigentlich einfach gehalten und hoffentlich zielführend.

Kleiner Tipp: Auf Powershell ist es wesentlich einfacher :x

Edit: Wie wäre es mit einem ziemlich hässlichen, aber funktionierenden Einzeiler?
for /f %%i in ('powershell return \"test\".length') do set testlength=%%i  

Gruß
Chris
Mitglied: 129413
129413 Jun 05, 2016 updated at 16:39:22 (UTC)
Goto Top
@echo off & setlocal enabledelayedexpansion
:password1
cls
set /p input=Neues Passwort [min. 8 Buchstaben]: 
REM Länge der Variablen ermitteln
call :strLength strLen "%input%"  
cls
REM Länge prüfen
if !strLen! GEQ 8 (
    netsh wlan set hostednetwork mode=allow
    netsh wlan set hostednetwork keyUsage=persistent
    netsh wlan set hostednetwork key=%input%
    echo         Passwort erfolgreich geändert !
    timeout /t 3
    goto config1
) else (
     echo        Passwort muss mindestens 8 Zeichen lang sein.
     timeout /t 3
     goto password1
)

goto :eof
REM Makro zum ermitteln der Länge einer Variablen
:strLength
set "#=%~2"  
set length=0
:stringLengthLoop
if defined # (set #=%#:~1%&set /A length += 1&goto stringLengthLoop)
set "%~1=%length%"  
goto :eof
Gruß Skybird
Member: rubberman
rubberman Jun 05, 2016 updated at 16:59:28 (UTC)
Goto Top
Hallo Max.

Dein IF Statement:
if "%input:~7%"=="" (echo Zu kurz!&pause&exit /b)
Variable input sollte vor der SET /P Anweisung noch mit einem kurzen String (z.B. a) definiert worden sein.

Grüße
rubberman