Random Befehl - Verhalten bei Aufruf durch die Aufgabenplanung
Hallo,
ich habe eine Batch-Datei erstellt. (SET /A "Zahl = %RANDOM% %% 9000")
Wenn ich diese Batch-Datei in einem Konsolenfenster mehrfach nacheinander starte, bekomme ich auch auch unterschiedliche Zahlen.
Wenn ich exakt die gleiche Batch-Datei über die Aufgabenplanung durch 3 erstellte Aufgaben mit jeweils 10 Sekunden Verzögerung starte, erhalte folgende Ergebnisse:
1. Zahl 4877 (ungefähre Zahl)
2. Zahl 4887
3. Zahl 4897
Warum verhält sich ein Batch mit dem Random Befehl in der Aufgabenplanung total anders als bei Start in einem Konsolenfenster ?
mfg
Peter
ich habe eine Batch-Datei erstellt. (SET /A "Zahl = %RANDOM% %% 9000")
Wenn ich diese Batch-Datei in einem Konsolenfenster mehrfach nacheinander starte, bekomme ich auch auch unterschiedliche Zahlen.
Wenn ich exakt die gleiche Batch-Datei über die Aufgabenplanung durch 3 erstellte Aufgaben mit jeweils 10 Sekunden Verzögerung starte, erhalte folgende Ergebnisse:
1. Zahl 4877 (ungefähre Zahl)
2. Zahl 4887
3. Zahl 4897
Warum verhält sich ein Batch mit dem Random Befehl in der Aufgabenplanung total anders als bei Start in einem Konsolenfenster ?
mfg
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 535306
Url: https://administrator.de/contentid/535306
Ausgedruckt am: 22.11.2024 um 07:11 Uhr
3 Kommentare
Neuester Kommentar
Wenn ich diese Batch-Datei in einem Konsolenfenster mehrfach nacheinander starte, bekomme ich auch auch unterschiedliche Zahlen.
Weil die Batchdatei immer wieder im gleichen cmd.exe Prozess (der deines Konsolefensters) ausgeführt wird. Der Nummerngenerator wurde einmal für den Prozess initialisiert und generierte Nummern sind dann das Seed für weitere Aufrufe der internen Funktion für Pseudo-Zufallszahlen.Deine Beispielwerte zeigen was passiert wenn dasselbe Script jeweils in einem neuen cmd.exe Prozess ausgeführt wird. Hier wird auch sichtbar mit was der Nummerngenerator initialisiert wird, nämlich mit der Systemzeit.
Wie gesagt, der vorangegangene Wert ist das Seed für den nächsten Aufruf. Und dieser erste Wert ist ein anderer, auch wenn sich der absolute Wert nur geringfügig ändert, sofern du sicherstellen kannst, dass das Script nicht tatsächlich zwei mal exakt gleichzeitig gestartet wird. Dieses Verhalten kannst du nutzen, indem du erst mal einen Aufruf ins Nirvana schickst und den nächsten Wert nutzt.
Bspw:
rem %RANDOM%
SET /A "Zahl = %RANDOM% %% 9000"
Steffen