Wie viele Buchstaben hat ein Wort bzw. Satz ?
Hallo
So... ich hab jezt ewig lang nen langen aufsatz geschrieben, mit allem drum und dran. kaum will ich den abschicken steht da ich bin nicht eingeloggt und die ganze seite text weg.
normal kopier ich bei sowas immer den ganzen text falls sowas passiert, aber genau dann wenn ich glaube es passiert eh nie, passierts !!!!!!!
p.s. die suchfunktion ist kaputt , deshalb hab ich auch nix gefunden
Jezt nochmal in kurzform:
Ich suche nach einer Möglichkeit rauszufinden, wieviele buchstaben ein wert hat:
z.b. set /p pw=Passwort:
????? -> das passwort hat 7 buchstaben
außerdem komme ich einfach nicht mehr weiter bei folgendem plan:
... das pw hat 7 buchstaben
set /a gesamt=%buchstaben%+1 ( weil vor und hinter jeden buchstaben ein random wort soll)
... 8 zufällige längen erstellen (hab ich schon geschafft )
ergebnis z.b. 12 7 18 9 5 11 19 16
::wort 1 generieren
:randomwort%zahl% ( zahl = 1-8 )
set zufallswort%zahl%=%a%%b%%c%%d% ( jeder buchstabe wird einzeln generiert und dann zu einem wort zusammengefügt, dass aber jedesmal unterschiedlich lang ist)*
*hier problem 2
zufällige worter generieren hab ich geschafft, ich schaff das nurnich, jedem wort eine zufällige länge zu geben
danke im vorraus für die antowrten und dafür, dass ihr mir verzeiht, dass ich extrem genervt bin.... (beeinflusst auch rechtschreibung)
So... ich hab jezt ewig lang nen langen aufsatz geschrieben, mit allem drum und dran. kaum will ich den abschicken steht da ich bin nicht eingeloggt und die ganze seite text weg.
normal kopier ich bei sowas immer den ganzen text falls sowas passiert, aber genau dann wenn ich glaube es passiert eh nie, passierts !!!!!!!
p.s. die suchfunktion ist kaputt , deshalb hab ich auch nix gefunden
Jezt nochmal in kurzform:
Ich suche nach einer Möglichkeit rauszufinden, wieviele buchstaben ein wert hat:
z.b. set /p pw=Passwort:
????? -> das passwort hat 7 buchstaben
außerdem komme ich einfach nicht mehr weiter bei folgendem plan:
... das pw hat 7 buchstaben
set /a gesamt=%buchstaben%+1 ( weil vor und hinter jeden buchstaben ein random wort soll)
... 8 zufällige längen erstellen (hab ich schon geschafft )
ergebnis z.b. 12 7 18 9 5 11 19 16
::wort 1 generieren
:randomwort%zahl% ( zahl = 1-8 )
set zufallswort%zahl%=%a%%b%%c%%d% ( jeder buchstabe wird einzeln generiert und dann zu einem wort zusammengefügt, dass aber jedesmal unterschiedlich lang ist)*
*hier problem 2
zufällige worter generieren hab ich geschafft, ich schaff das nurnich, jedem wort eine zufällige länge zu geben
danke im vorraus für die antowrten und dafür, dass ihr mir verzeiht, dass ich extrem genervt bin.... (beeinflusst auch rechtschreibung)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 116975
Url: https://administrator.de/contentid/116975
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
16 Kommentare
Neuester Kommentar
Hallo monoffel!
Die Länge könntest Du (ohne "delayedExpansion", was bei Passwörtern sicherlich vorteilhaft ist) zB so bestimmen:
Könntest Du Problem 2 vielleicht noch etwas genauer beschreiben (bin - hoffentlich nur heute - wohl etwas schwer von Begriff)?
Grüße
bastla
Die Länge könntest Du (ohne "delayedExpansion", was bei Passwörtern sicherlich vorteilhaft ist) zB so bestimmen:
@echo off & setlocal
set /p pw=Passwort
set /a L=0
:Loop
call set Z=%%pw:~%L%,1%%
if defined Z (set /a L+=1 & goto :Loop)
echo %pw% hat %L% Zeichen
Grüße
bastla
Hallo monoffel!
Eine "leere" Eingabe hatte ich noch nicht berücksichtigt, daher müsste zur Vermeidung einer Endlosschleife noch vor Zeile 4 eingefügt werden:
Wenn Du eine Eingabe machst, sollte auch die Länge berechnet und ausgegeben werden.
Grüße
bastla
Eine "leere" Eingabe hatte ich noch nicht berücksichtigt, daher müsste zur Vermeidung einer Endlosschleife noch vor Zeile 4 eingefügt werden:
if not defined pw (echo Kein Passwort eingegeben! & goto :eof)
Zu delayedexpansion: warum ist es denn schlecht wenn es an ist bei Passwörtern? Is doch eigentlich nur, dass man eine Variable in eine andere setzen kann...
Weil durch die Tatsache, dass Variable dann durch "!" begrenzt werden, das Rufzeichen als möglicher Bestandteil des Passworts wegfällt ...Grüße
bastla
Hallo monoffel!
Sorry, kann ich nicht nachvollziehen ([Edit] Es sei denn, Du hättest am Ende der Zeile 5 ein Leerzeichen (liegt dann an der Forensoftware) - kann mit dem unten stehenden Code nicht mehr passieren [/Edit] ...
Teste mal folgenden Code:
Zur Zeile 6: Die Prozentzeichen gehören da nicht hin.
Grüße
bastla
Sorry, kann ich nicht nachvollziehen ([Edit] Es sei denn, Du hättest am Ende der Zeile 5 ein Leerzeichen (liegt dann an der Forensoftware) - kann mit dem unten stehenden Code nicht mehr passieren [/Edit] ...
Teste mal folgenden Code:
@echo off & setlocal
set "pw=Das Passwort"
set /a L=0
:Loop
call set "Z=%%pw:~%L%,1%%"
if defined Z (set /a L+=1 & goto :Loop)
echo %pw% hat %L% Zeichen
Grüße
bastla
So... ich hab jezt ewig lang nen langen aufsatz geschrieben, mit allem drum und dran. kaum will ich den abschicken steht da ich bin nicht eingeloggt und die ganze seite text weg.
Da gibt es einen ganz einfachen Trick: Wenn die Fehlermeldung kommt machst du einen zweiten Tab auf, loggst dich in dem wieder ein und drückst im Anderen auf Reload (die POST-Meldung mit OK bestätigen) - schon ist der Artikel gespeichert...
Hallo monoffel!
Meinst Du mit Problem 2 etwa folgendes?
Zur Verwendung von "delayedExpansion": Probier mal die beiden Beispiele, dann weißt Du, was ich meine ...
Ohne:
... und mit:
Grüße
bastla
Meinst Du mit Problem 2 etwa folgendes?
@echo off & setlocal
set /p pw=Passwort
set /a L=0
if not defined pw (echo Kein Passwort eingegeben! & goto :eof)
:Loop
call set "Z=%%pw:~%L%,1%%"
if defined Z (set /a L+=1 & goto :Loop)
echo %pw% hat %L% Zeichen
set "Code="
set "Lens="
set /a L-=1
for /l %%i in (0,1,%L%) do call :ProcessChar %%i
set /a codelength=%random%/1640
set "Lens=%Lens%%codelength%"
for /l %%i in (1,1,%codelength%) do call :GetRandomDigit
echo %Lens%
echo %Code%
goto :eof
:ProcessChar
set /a codelength=%random%/1640
set "Lens=%Lens%%codelength%,"
for /l %%i in (1,1,%codelength%) do call :GetRandomDigit
call set "Code=%Code%%%pw:~%1,1%%"
goto :eof
:GetRandomDigit
set "Code=%Code%%random:~-1%
goto :eof
Zur Verwendung von "delayedExpansion": Probier mal die beiden Beispiele, dann weißt Du, was ich meine ...
Ohne:
@echo off & setlocal
set "pw=Das Passwort! und noch mehr! ist drin"
echo %pw%
@echo off & setlocal enabledelayedexpansion
set "pw=Das Passwort! und noch mehr! ist drin"
echo %pw%
echo !pw!
bastla
Hallo monoffel!
Das Programm schreibt vor, zwischen und nach die einzelnen Zeichen des Passworts eine unterschiedliche Anzahl zufällilger Ziffern (und speichert die Stellenanzahl, durch Kommata getrennt - in einem String) - der Ablauf sieht zB so aus:
Grüße
bastla
Das Programm schreibt vor, zwischen und nach die einzelnen Zeichen des Passworts eine unterschiedliche Anzahl zufällilger Ziffern (und speichert die Stellenanzahl, durch Kommata getrennt - in einem String) - der Ablauf sieht zB so aus:
PasswortABCDEF
ABCDEF hat 6 Zeichen
9,15,13,10,14,7,3
807720380A201087415321475B1525362730284C8158749872D87615299992590E7694298F540
^ 9 ^A^ 15 ^...
bastla
Hallo monoffel!
Vorweg einmal 1.
und 2.
Grüße
bastla
Vorweg einmal 1.
@echo off & setlocal
set "Vpasswort=807720380A201087415321475B1525362730284C8158749872D87615299992590E7694298F540"
set "reglens=9,15,13,10,14,7,3"
set PW=
for %%i in (%reglens%) do call :ProcessPart %%i
echo %PW%
goto :eof
:ProcessPart
set /a Pos+=%1
call set "PW=%%PW%%%%Vpasswort:~%Pos%,1%%"
::call set "Z=%%Vpasswort:~%Pos%,1%%"
::set "PW=%PW%%Z%"
set /a Pos+=1
goto :eof
@echo off & setlocal
set /p pw=Passwort
set /a L=0
if not defined pw (echo Kein Passwort eingegeben! & goto :eof)
:Loop
call set "Z=%%pw:~%L%,1%%"
if defined Z (set /a L+=1 & goto :Loop)
echo %pw% hat %L% Zeichen
set "Code="
set "Lens="
set /a L-=1
for /l %%i in (0,1,%L%) do call :ProcessChar %%i
set /a codelength=%random% %% 16 + 5
set "Lens=%Lens%%codelength%"
for /l %%i in (1,1,%codelength%) do call :GetRandomDigit
echo %Lens%
echo %Code%
goto :eof
:ProcessChar
set /a codelength=%random%%%16+5
set "Lens=%Lens%%codelength%,"
for /l %%i in (1,1,%codelength%) do call :GetRandomDigit
call set "Code=%Code%%%pw:~%1,1%%"
goto :eof
:GetRandomDigit
set "Code=%Code%%random:~-1%
goto :eof
bastla
... und damit nicht nur Ziffern vorkommen, könnte das dann etwa so aussehen:
Grüße
bastla
@echo off & setlocal
set "Chars=0123456789ABCD...XYZabcd...xyz...:?()$"
::Anzahl der verfügbaren Zeichen angeben oder,
::wie unten für %pw% gezeigt, Länge mit einer Schleife bestimmen
set "NumberOfChars=40"
set /p pw=Passwort
set /a L=0
if not defined pw (echo Kein Passwort eingegeben! & goto :eof)
:Loop
call set "Z=%%pw:~%L%,1%%"
if defined Z (set /a L+=1 & goto :Loop)
echo %pw% hat %L% Zeichen
set "Code="
set "Lens="
set /a L-=1
for /l %%i in (0,1,%L%) do call :ProcessChar %%i
set /a codelength=%random% %% 16 + 5
set "Lens=%Lens%%codelength%"
for /l %%i in (1,1,%codelength%) do call :GetRandomChar
echo %Lens%
echo %Code%
goto :eof
:ProcessChar
set /a codelength=%random%%%16+5
set "Lens=%Lens%%codelength%,"
for /l %%i in (1,1,%codelength%) do call :GetRandomChar
call set "Code=%Code%%%pw:~%1,1%%"
goto :eof
:GetRandomChar
set /a Pos=%random% %% %NumberOfChars%
call set "Code=%%Code%%%%Chars:~%Pos%,1%%
goto :eof
bastla