Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung Batch & Shell

GELÖST

Random-Befehl mit Buchstaben

Mitglied: Motorcross

Motorcross (Level 1) - Jetzt verbinden

31.07.2009, aktualisiert 15:49 Uhr, 11025 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 ..
Ähnliche Inhalte
Netzwerkgrundlagen
Random MAC Win7 IPv6 verhindern
Frage von infowarsNetzwerkgrundlagen3 Kommentare

Hi, ich habe einen Win7 64 bit Rechner neu aufgespielt, welcher seine IPv6-Adresse nicht ändern soll und diese deshalb ...

Batch & Shell
Buchstaben in Zahlen umwandeln
gelöst Frage von KawoosheBatch & Shell8 Kommentare

Hallo, ich wollte mal fragen ob man Buchstaben (groß und klein schreibung egal) in ihre dazugehörige zahl umwandeln kann( ...

Exchange Server
Ersten Buchstaben einer Mail werden abgeschnitten
Frage von Philipp.SExchange Server2 Kommentare

Hallo Admins, vereinzelnd kommt es immer wieder vor, dass bei Mitarbeitern die ersten Buchstaben einer Mail abeschnitten werden. z.B. ...

Batch & Shell
In Batch random-Zahlen erzeugen mit führenden Nullen
gelöst Frage von DerWoWussteBatch & Shell6 Kommentare

Moin Kollegen. Ich kann per Variable %random% zwar Zufallszahlen erzeugen, weiß jedoch nicht, wie ich führende Nullen einbauen kann. ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Monitoring
VPN Performance Zyxel-Fritte
gelöst Frage von HenereMonitoring13 Kommentare

Servus, nachdem ihr mir ja schon so gut helfen konntet, was das VPN zwischen Zyxel USG60W und Fritte 7490 ...

Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

Sicherheit
Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen
Information von FrankSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...