Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Random-Befehl mit Buchstaben

Frage Entwicklung Batch & Shell

Mitglied: Motorcross

Motorcross (Level 1) - Jetzt verbinden

31.07.2009, aktualisiert 15:49 Uhr, 10250 Aufrufe, 14 Kommentare

Hallo Administratoren,

ich wollte mal fragen ob es einen script oder Befehl für eine beliebige Buchstaben Reihe gibt.(Also wie %random% mit Buchstaben?
Wäre toll wen jemand eine Idee hätte.
Gruß Motorcross
Mitglied: bastla
31.07.2009 um 16:25 Uhr
Hallo Motorcross!

Gut, dass Du uns nicht mit unnötigen Details wie
  • wieviele Buchstaben,
  • welche Buchstaben (Groß- und/oder Kleinbuchstaben), ev
  • auch Sonderzeichen
verwirren willst ...

Dass die Verwendung in einem Batch erfolgen soll, ist natürlich als selbstverständlich vorauszusetzen.

Grüße
bastla
Bitte warten ..
Mitglied: Motorcross
31.07.2009 um 16:45 Uhr
Hallo bastla,
weißt du denn wie man so etwas programmieren kann?
Gruß Motorcross
Bitte warten ..
Mitglied: bastla
31.07.2009 um 17:03 Uhr
Hallo Motrocross!
weißt du denn wie man so etwas programmieren kann?
Solange ich nicht weiß, was "so etwas" tatsächlich sein soll, kann ich diese Frage nicht beantworten ...

Grüße
bastla
Bitte warten ..
Mitglied: Motorcross
31.07.2009 um 23:04 Uhr
Hallo bastla,
ich suche nach einem Script, dass zufällige bustaben von sich gibt wie z.B. ziethumk. In diesem Wort können auch Ziffern sein.(Egal)
Es ist auch egal wie viele Buchstaben es sind.Es wäre gut, wenn es 6 oder 7 wären.
Hättest du eine Idee?
Gruß Motorcross
Bitte warten ..
Mitglied: bastla
31.07.2009 um 23:34 Uhr
Hallo Motorcross!

In diesem Fall:
01.
@echo off & setlocal 
02.
set "Zeichenvorrat=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" 
03.
 
04.
set G=%temp%\GetRandomText.vbs 
05.
>%G% echo Z="%Zeichenvorrat%":L=Len(Z):For i=1 To WScript.Arguments(0):Randomize:T=T^&Mid(Z,Int(Rnd*L+1),1):Next:WScript.Echo T 
06.
 
07.
::Zufallstext mit Laenge 7 ermitteln 
08.
for /f %%i in ('cscript //nologo %G% 7') do set "ZText=%%i" 
09.
echo %ZText%
Grüße
bastla
Bitte warten ..
Mitglied: rubberman
31.07.2009 um 23:58 Uhr
Reine Batchlösung etwa so:
01.
@echo off &setlocal enabledelayedexpansion 
02.
set "source=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9" 
03.
echo %random%>nul 
04.
for /l %%a in (1,1,7) do ( 
05.
  set /a rdm=!random!*62/32767+1 
06.
  set /a counter=0 
07.
    for %%b in (%source%) do ( 
08.
      set /a counter+=1 
09.
      if !rdm!==!counter! set "txt=!txt!%%b" 
10.
11.
12.
13.
echo %txt% 
14.
pause
Bitte warten ..
Mitglied: bastla
01.08.2009 um 00:25 Uhr
@rubberman
Oder, um die Anzahl der verfügbaren Zeichen nicht selbst ermitteln zu müssen (soferne konsequent Leerzeichen zur Trennung verwendet werden):
01.
@echo off &setlocal enabledelayedexpansion 
02.
set "source=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9" 
03.
 
04.
set /a Pos=0 
05.
set /a Anzahl=0 
06.
:Loop 
07.
set "Char=!source:~%Pos%,1!" 
08.
if "%Char%" neq "" ( 
09.
    set /a Pos+=1     
10.
    if "%Char%" neq " " set /a Anzahl+=1 
11.
    goto :Loop 
12.
13.
 
14.
echo %random%>nul 
15.
set "txt=" 
16.
for /l %%a in (1,1,7) do ( 
17.
  set /a rdm=!random!%%%Anzahl% 
18.
  set /a counter=0 
19.
    for %%b in (%source%) do ( 
20.
      if !rdm!==!counter! set "txt=!txt!%%b" 
21.
      set /a counter+=1 
22.
23.
24.
25.
echo %txt% 
26.
pause
Natürlich scheiden bei beiden Batch-Versionen für eine Erweiterung des Zeichenvorrates um Sonderzeichen die Zeichen "," sowie ";" und "=" aus.

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
01.08.2009 um 00:44 Uhr
@bastla
keine schlechte Idee

Wo wir bei Zufallswerten sind, würde mich mal interessieren, warum beim ersten Erweitern von %random% im Batch immer nahezu der gleiche Wert heraus kommt. Ich schicke den grundsätzlich erst mal ins Nirvana. Ist das so, weil sich die Berechnungsgrundlage (Systemzeit) bei mehrmaligen Aufrufen des Batch nur wenig geändert hat? Wenn ja, was ist anders wenn die Variable während der Laufzeit des Batches erneut expandiert wird?

Grüße
rubberman
Bitte warten ..
Mitglied: bastla
01.08.2009 um 00:55 Uhr
@rubberman
Sorry - mit Deinen Fragen muss ich Dich leider an Biber verweisen, da ich die Hintergründe dieses Verhalten auch nicht kenne ...
Ansonsten hätte ich noch eine etwas kürzere Variante (mit der auch die vorhin erwähnten Sonderzeichen verwendet werden können) anzubieten:
01.
@echo off &setlocal enabledelayedexpansion 
02.
set "source=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" 
03.
 
04.
set /a Anzahl=0 
05.
:Loop 
06.
if "!source:~%Anzahl%,1!" neq "" set /a Anzahl+=1 & goto :Loop 
07.
 
08.
echo %random%>nul 
09.
set "txt=" 
10.
for /l %%a in (1,1,7) do ( 
11.
    set /a rdm=!random!%%%Anzahl% 
12.
    call set "txt=!txt!%%source:~!rdm!,1%%" 
13.
14.
echo %txt% 
15.
pause
Grüße
bastla
Bitte warten ..
Mitglied: rubberman
01.08.2009 um 01:12 Uhr
@bastla
danke trotzdem. Und was das Zählen der Zeichen angeht - wieder ein Codeschnipsel der seinen Platz in meinen Fundus finden wird Merci.

Grüße
rubberman

<edit> & Urheber-Merci an Biber </edit>
Bitte warten ..
Mitglied: bastla
01.08.2009 um 01:23 Uhr
@rubberman
ein Codeschnipsel der seinen Platz in meinen Fundus finden wird Merci.
"Merci" weitergereicht an Biber ...

Grüße
bastla
Bitte warten ..
Mitglied: Motorcross
01.08.2009 um 09:53 Uhr
Hallo bastla und rubbermann,
ihr habt tolle Scribts programmiert kompliment!
Gruß Motorcross
Bitte warten ..
Mitglied: Biber
02.08.2009 um 01:48 Uhr
Moin Motorcross,
Moin bastla & rubberman,

Noch ein kleiner Nachtrag von mir zu dem
  • "wie zufällig ist %random%"? und
  • "der erste %random%-Wert im Batch ist oft gleich dem zweiten"

Die zweite Behauptung kann ich meinem betagten Rechner nicht verifizieren.
Allerdings sollte dieser kleine "randomtest.cmd"-Schnipsel evtl mal auf Deinem,@rubberman, Rechner angestartet werden.
01.
::-------snipp randomtest.cmd 
02.
@echo off & setlocal EnableDelayedExpansion  
03.
set "varNotDelayed=%random%"  
04.
set "varDelayed=!random!"  
05.
 
06.
echo a]  
07.
echo %random% & for /L %%i in (1,1,10) do @echo  %random%  %random% %random% 
08.
echo b]  
09.
echo !Random! & for /L %%i in (1,1,10) do @echo  !random!  !random! !random! 
10.
pause 
11.
echo c] %varNotdelayed% 
12.
for /L %%i in (0,1,327670) do if !random!==%varNotDelayed% Set /a varsameND+=1 
13.
 
14.
echo d] %vardelayed% 
15.
for /L %%i in (0,1,327670) do if !random!==%varDelayed% Set /a varsameD+=1 
16.
Set varsame
Die "Vorglüher" a] und b] sollen nur noch mal den Unterschied von Delayed/NotDelayed sichtbar machen.
Im Fall a] sind in der FOR/L-Anweisung bei jedem Schleifendurchlauf die "gleichen" %random%-Werte, da %random% eben nur einmalig aufgelöst wird.
Der Wert !random! bei B] dagegen wird verzögert aufgelöst, also nicht schon beim Parsen der Kommandozeile.
$cmd$randomtest 
a] 
28594 
 513  21394 14416 
 513  21394 14416 
 513  21394 14416 
 513  21394 14416 
 513  21394 14416 
 513  21394 14416 
 513  21394 14416 
 513  21394 14416 
 513  21394 14416 
 513  21394 14416 
b] 
25846 
 22741  12404 28107 
 3932  27485 27891 
 24661  13043 13624 
 32441  13621 3316 
 14224  30689 13685 
 1107  14167 23582 
 7747  18581 12496 
 22074  20631 21217 
 9298  25027 9238 
 32089  8265 15617 
Drücken Sie eine beliebige Taste . . .
Jetzt die interessanteren Fälle c] und d]

Hier lasse ich in den FOR /L-Anweisungen jeweils das 10fache der Spannbreite des %random%-Wertebereichs abgrasen (also von 0 bis (32767x10) ).
und prüfe jeweils, ob der Wert gleich dem anfänglich ermittelten ist.
Ist er natürlich mal (gemäß Wahrscheinlichkeitsrechnung), aber nicht oft.
Das Ergebnis am Ende bestätigt NICHT, das (an meinem langsamen Rechner) der Wert des zuerst "gezogenen" %random%-Wertes sich überproportional wiederholt.
c] 6712 
d] 14609 
varsameD=11 
varsameND=9
Der zuletzt gepostete "Messwert" ist schon extrem.
Ich hatte bei ein paar Testläufen meist 7 bis 9 mal einen wiederholten "Erstwert".
Würde mich interessieren, was auf einer neumodischen Renmaschine mit -zig Kernen rauskommt.

Denn: Natürlich sind alle %random%, Rnd(), Rand(), Zufallszahl() etc. pp Funktionen/Methoden in der Tat
a) nicht gleichverteilt, da b) Timer-Abhängig

Wobei allerdings die Nicht-Gleichverteilung fernab jeder Vorhersagbarkeit bestimmter Zahlen oder Werte ist.
Es ist bei weitem nicht gleichverteilt und ist auf jedem Rechner anders, soviel lässt sich sagen (beispielsweise wenn in einem Über-Nacht-Batchlauf mal die Verteilung der geraden/ungeraden Zahlen oder die Verteilung der Zahlen im ersten/zweiten....zehnten Zehntel des möglichen Wertebereichs protokolliert wird.)

Der langen Rede kurzer Sinn:
Ja, es kann sein, dass auf rubbermans Rechner der erwähnte Effekt auftritt - why not
Ja, schaden kann umgekehrt auf keinem anderen Rechner dieser Zwischenschritt "Entsorge ersten %random%-Wert.
Nein, insgesamt ist die dynamische %random%-Variable deshalb nicht "schlecht" oder untauglich.
Denn Satelliensteuerungsprogramme werden nicht als CMD-Batches zusammengetrümmert.

Grüße
Biber
Bitte warten ..
Mitglied: rubberman
02.08.2009 um 14:54 Uhr
@Biber,
vielen Dank für das ausführliche Workaround mit allerdings auch nicht sonderlich überaschenden Ergebnissen. Ich denke etwas missverständlich war mein Posting von oben wahrscheinlich. Was ich meinte ist wesentlich einfacherer Natur:
01.
@echo off &setlocal 
02.
set /a rdm=%random% 
03.
set /a rdm2=%rdm%*100/32767 
04.
echo Originalwert: %rdm% 
05.
echo umgerechneter Wert: %rdm2% 
06.
pause
Diesen Schnipsel mehrfach händisch hintereinander gestartet, ergibt bei mir Werte, die sich zwar voneinander unterscheiden, allerdings nicht signifikant. Das heißt, wenn diese Werte in kleinere umgerechnet werden, erhält man dann oft genug gar keine Unterschiede mehr.

Grüße
rubberman
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...