Cmd 8-stellig Zufallszahlen?
Hallo, wie kann man eine 8-stellige Zahl in Cmd zufällig schreiben?
In diesem Format xxxx-xxxx
4 Antworten
Man erzeuge zwei 4-Stellige Zufallszahlen und kombiniere diese...
rem Zufallszahl zwischen 1000 und 9999 (Keine führernde 0)
set /a "rnd01=%random% %% 9000 + 1000"
rem Zufallszahl zwischen 10000 und 19999 , die ist jetzt 5-Stellig, wir wollen aber auch gegebenenfalls führende Nullen...
set /a "rnd02=%random% %% 10000 + 10000"
rem ...also schneiden wir die erste Ziffer vom 2. Teil unseres langen Random brutal ab und behalten die letzten 4 Ziffern
rem das ganze noch zusammenfiedeln
set "longRandom=%rnd01%%rnd02:~-4%"
echo Zufallszahl 1 = %rnd01%
echo Zufallszahl 2 = %rnd02%
echo beide vereint = %longRandom%
pause
...wäre ja echt blöd wenn man das ganze Gerommel wieder und wieder aufschreiben müsste, deshalb eine Variante mit Subroutine.
@echo off
rem Subroutine :getRnd_8 mit Namen der Zielvariable aufrufen
call :getRnd_8 meineVariable
echo %MeineVariable%
call :getRnd_8 andereVariable
echo %andereVariable%
rem Array mit 8-Stelligen Zufallszahlen erstellen
for /l %%a in (1,1,9) do (
call :getRnd_8 meinArray[%%a]
)
rem Array anzeigen
set "meinArray"
pause
exit /b
:::::::: Subroutines :::::::
:getRnd_8 %1=VariableName
set /a "rnd01=%random% %% 9000 + 1000 , rnd02=%random% %% 10000 + 10000"
set "%~1=%rnd01%%rnd02:~-4%"
exit /b
zuguteerletzt noch eine MakroVariante (Makros haben keine Call-verzögerung und sind sehr schnell)
@echo off
setlocal enableDelayedExpansion
rem Wer hat schon Lust jedesmal das ganze Prozedere für jede Neue Zufallszahl zu schreiben..
rem also bauen wir ein leicht abrufbares makro
set "GetRand_8=set /a "rnd01=^^!random^^! %% 9000 + 1000,rnd02=^^!random^^! %% 10000 + 10000" & set "Rand_8=^^!rnd01^^!^^!rnd02:~-4^^!""
%GetRand_8%
echo neuer Rand_8= %Rand_8%
%GetRand_8%
echo neuer Rand_8= %Rand_8%
%GetRand_8%
echo neuer Rand_8= %Rand_8%
rem der Aufruf des Makros geht auch innerhalb einer Schleife geht auch in einer Schleife
for /l %%a in (1,1,100) do (
%GetRand_8%
echo neuer Rand_8[%%a]=!Rand_8!
)
pause
Ich habe vor einiger Zeit bereits auf eine ähnliche Frage geantwortet (https://www.gutefrage.net/frage/batchdatei-hoehere-zufallswert-als-32768#answer-336018767) mithilfe von diesem Code kannst du ganz einfach eine achtstellige Zufallszahl erzeugen, oder 2 vierstellige mit einem Bindestrich aneinanderhängen:
@echo off
call :randomNumber 4
set "n=%return%"
call :randomNumber 4
set "n=%n%-%return%"
echo %n%
pause & exit
:: returns random number (base 10) with %~1 digits.
:randomNumber <digits>
setlocal enableDelayedExpansion
set "return="
for /L %%i in (1,1,%~1) do (
set /a "r = (10 * !random!) / 32768"
set "return=!return!!r!"
)
endlocal & set "return=%return%"
exit /b
CMD aufmachen, vier mal irgendwie aufs Numpad drücken, dann ein Minuszeichen eingeben und dann noch viermal aufs Numpad.
in einer .bat datei.
wenn ich die Datei öffne, soll immer eine andere Zahl kommen.
Hier mal die Zufallszahl
@echo off
set Augen=99999999
set /a wurf =%random% %%Augen%
echo %wurf%
pause
Dies erzeugt ein Zufallszahl zwischen 0 und 9999 9999
Die Formatierung auf xxxx-xxxx ist nun ein weiterer Schritt.
Wenn es mindestens mit einer 8stelligen Zufallszahl losgehen soll dann musst du
@echo off
set Augen=89999999
set /a wurf =%random% %%Augen%+10000000
echo %wurf%pause
..man muss natürlich aus dem Beispiel die Ziffern anpassen um auf den eigenen Fall anzupassen. Das Beispiel ist umfangreicher, als tatsächlich benötigt. Hier gilt es die Lösung auf den eigenen Wunsch abzuändern. Soviel Eigeninitiative darf man erhoffen.
Dies erzeugt ein Zufallszahl zwischen 0 und 9999 9999
Du führst ein Modulo 99999999 auf eine Zahl von maximal 32767 aus. Es hat nichts mit der Anpassung einiger Ziffern zu tun, sondern bestenfalls das ignorieren der mathematischen Tatsache, das Modulo der Divisionsrest ist und für alle Divisoren größer als der Dividend immer den Betrag des Divideten ergibt ....als max 32767.
Da kommt nie ein 8stelliges Ergebnis...
Egal wie Unfangreich Du eine Demo gestaltest, sie muss mathematisch und logisch richtig sein. Ansonsten ist sie wertlos.
Die Hilfesuchenden hier im GF sind in der Regel Anfänger, welche bei einem falschen Ansatz anpassen können wie sie wollen, es führt nie zum gewünschten Ergebnis .
Du hast ja wohl auch nur angepasst ohne dein Beispiel zu verifizieren.
Es ist nicht böse von mir gemeint, wenn ich Kritik übe, hilft es doch zukünftig Fehler zu vermeiden.
bei mir funktiniert es.
schau mal
https://stackoverflow.com/questions/5777400/how-to-use-random-in-batch-script
nein kann nicht Gehen die höchste Zufallszahl in Batch ist 32767... der Zauber mit VB-/JScript ist hier nicht nötig...