Batch Umsetzung möglich?

Geser

Newbie
Registriert
Aug. 2014
Beiträge
4
Hallo zusammen,

ich sitze nun schon eine Weile vorm Rechner und suche mit im Netz durch diverse Anleitungen; werde aber leider nicht fündig.

Kurzer Hintergrund zu meinem Vorhaben. Ich leite aktuell Seminare, bei denen meine Teilnehmer diverse Fälle am Beamer präsentieren. Diese sollen ja nach Möglichkeit freiwillig die Aufgabe am Beamer abbilden. Leider ist das mit dem "freiwillig" anscheinden für alle schwierig und ich wähle nach Zufallsprinzip einen "Freiwilligen" aus :evillol:


Ich habe mir bereits eine Batch erstellt, welche eine zufällige Teilnehmerkennung per %random% aussucht :)

@echo off
:a
set /a r=%random% %%11
if %r%==0 (set a=21 & goto 1)
if %r%==1 (set a=22 & goto 1)
if %r%==2 (set a=23 & goto 1)
if %r%==3 (set a=24 & goto 1)
if %r%==4 (set a=25 & goto 1)
if %r%==5 (set a=26 & goto 1)
if %r%==6 (set a=27 & goto 1)
if %r%==7 (set a=28 & goto 1)
if %r%==8 (set a=29 & goto 1)
if %r%==9 (set a=30 & goto 1)
if %r%==10 (set a=31 & goto 1)
if %r%==11 (set a=32 & goto 1)
:1
cls
Color f
echo.
echo Wir haben eine(n) Freiwillige(n) gefunden!
echo.
echo.
echo Teilnehmer(in) mit der Schulungskennung %a%wurde bestimmt!
echo.
echo.
pause
goto a

Nun hätte ich als kleines Gimmik noch eine Art "Ladebildschirm" in Form von Texten. Hierbei soll aus einer Liste von 18 Texten zwei bis drei Sprüche wie

"untersuche Motivation der Teilnehmer..."
"berechne Laune der Teilnehmer..."
"analysiere potenziellen Freiwilligen..."

angezeigt werden.

Also beim Start der Batch:

analysiere potenziellen Freiwilligen... (cls)
berechne Laune der Teilnehmer... (cls)
untersuche Motivation der Teilnehmer... (cls)
Wir haben eine(n) Freiwillige(n) gefunden!
Teilnehmer(in) mit der Schulungskennung 21 wurde bestimmt!
(Batch geht wieder von Neuem los)

Ist die Realisierung in einer Batch möglich?
Ich hoffe ich konnte mein "Problem" erklären und ihr könnt mir weiterhelfen.

mfG
 
Uhrzeit nehmen, auf ganzzahlen konverierten und per modulo in deinen Zahlenwertebereich bringen. Schon hast du deinen "Zufall".

Ob Batch einen modulo operator hat? Keine Ahnung

Edit: Oh i missed the point.
 
Zuletzt bearbeitet:
Ansonsten genau so wie mit den Teilnehmern, außer dass er einer Variablen einen Text zuweist.
Darum noch ein %random% der bestimmt, ob die Schleife mit den Texten nochmal ausgeführt wird.
 
Willst du sowas wirklich noch mit cmd realisieren?

Ich glaub da findest du im iNet auch genug Codeschnipsl, die das in VBS oder so schöner darstellen können.

Andererseits bin ich au ein CMD Fanboy ;-)

Vermutlich aber nur weil ich VBS nicht so gut kann.
 
3murmeln schrieb:
Ansonsten genau so wie mit den Teilnehmern, außer dass er einer Variablen einen Text zuweist.
Darum noch ein %random% der bestimmt, ob die Schleife mit den Texten nochmal ausgeführt wird.

Also den zweiten %rnd%-Befehl mit den Texten bekomme ich noch hin. Leider habe ich keine Ahnung, wie die beiden dann "verknüpfen" soll.
Die Batch oben, habe ich auch nur durch Suche im Netz gefunden -> verstanden -> abgeändert. Leider hört es halt jetzt bei mir auf. :(

Wenn mir also evtl. jemand mit einem "Grundgerüst" weiterhelfen kann, wäre ich glücklich. Ansonsten belasse ich es bei der einen Batch oben. Wäre halt nur eine kleines, nettes Gimmick ;)

mfG
 
Code:
@echo off
:a
set /a r=%random% %%11
if %r%==0 (set a=21 & goto 1)
if %r%==1 (set a=22 & goto 1)
if %r%==2 (set a=23 & goto 1)
if %r%==3 (set a=24 & goto 1)
if %r%==4 (set a=25 & goto 1)
if %r%==5 (set a=26 & goto 1)
if %r%==6 (set a=27 & goto 1)
if %r%==7 (set a=28 & goto 1)
if %r%==8 (set a=29 & goto 1)
if %r%==9 (set a=30 & goto 1)
if %r%==10 (set a=31 & goto 1)
if %r%==11 (set a=32 & goto 1)
:1
cls
Color f
REM ping -n x in Sekunden
echo. "untersuche Motivation der Teilnehmer..."
ping localhost -n 3 >nul
echo. "berechne Laune der Teilnehmer..."
ping localhost -n 4 >nul
echo. "analysiere potenziellen Freiwilligen..."
ping localhost -n 3 >nul
echo.
echo Wir haben eine(n) Freiwillige(n) gefunden!
echo.
echo.
echo Teilnehmer(in) mit der Schulungskennung %a%wurde bestimmt!
echo. 
echo.
pause
goto a

h00bi war schneller...
 
Du kannst "variable Variablen" verwenden. Dazu braucht es aber "delayedexecution".
Schau mal hier:
http://www.administrator.de/forum/batch-variable-in-variable-38454.html

Dann kannst du dir entsprechend spruch_01 bis spruch_18 machen und spruch_%rnd% auflösen.

Mehr Beispiel:
http://stackoverflow.com/questions/10558316/example-of-delayed-expansion-in-batch-file

Gerade probiert und die Auflösung funktioniert. Damit müsstest du dein 2. Random hinkriegen.
Code:
@echo off 
setlocal ENABLEDELAYEDEXPANSION
set spruch_12=Test
set num=12
echo !spruch_%num%!
Ergänzung ()

h00bi schrieb:
mit echo die anzeige an und ausschalten
dazwischen mit ping -n 4 localhost > NUL Pausen einlegen
Er wollte aus 18 Sprüchen 2-3 zufällig auswählen, jedes mal andere.
 
Erstmal danke für die Hilfe. Leider versteh ich es nicht mit den "variablen Variablen" bzw. komme nicht auf die gewünschte Lösung.
 
hab mal kurz nur ein Beispiel mit 2 Texten statt 18 gemacht, d.h. jedes mal kommt nur 1 Text aus Zufall raus

@echo off
:a
set /a r=%random% %%11
if %r%==0 (set a=21 & goto 1)
if %r%==1 (set a=22 & goto 1)
if %r%==2 (set a=23 & goto 1)
if %r%==3 (set a=24 & goto 1)
if %r%==4 (set a=25 & goto 1)
if %r%==5 (set a=26 & goto 1)
if %r%==6 (set a=27 & goto 1)
if %r%==7 (set a=28 & goto 1)
if %r%==8 (set a=29 & goto 1)
if %r%==9 (set a=30 & goto 1)
if %r%==10 (set a=31 & goto 1)
if %r%==11 (set a=32 & goto 1)
:1
cls


set /a zahl=%random% %%2
set text=text%zahl%
goto %text%

:Text0
Echo Untersuche Motivation der Teilnehmer
timeout 2 > null
echo .
timeout 2 > null
echo .
timeout 2 > null
echo .
goto end

:Text1
Echo Berechne Laune der Teilnehmer
timeout 2 > null
echo .
timeout 2 > null
echo .
timeout 2 > null
echo .
goto end

:end

Color f
echo.
echo Wir haben eine(n) Freiwillige(n) gefunden!
echo.
echo.
echo Teilnehmer(in) mit der Schulungskennung %a%wurde bestimmt!
echo.
echo.
pause
goto a
Ergänzung ()

p.s. daraus könntest du vllt was daraus basteln, also gleichzeitig mit 3 Texten aus Zufall xD
 
Danke für deine Hilfe! Wenn ich daraus nun einen "Ladebildschirm" mit drei zufallsbasierten Texten bastel will, müsste ich aber 18 mal jeweils 3 verschiedene vorgeben, oder?

Also so:

Code:
:Text0
Echo Untersuche Motivation der Teilnehmer
timeout 2 > null
cls
echo Berechne Laune der Teilnehmer
timeout 2 > null
cls
echo messe Raumtemperatur 
timeout 2 > null
goto end

Und für die Sprungmarken Text1 bis Text17 auch wieder drei verschiedene. Es wird dann nur per Zufall zwischen den Sprungmarken unterschieden, welcher der Textblöcke ausgegeben wird?!

(Langsam aber sicher finde ich batch sehr interessant :D)
 
set /a zahl=%random% %%2
set text=text%zahl%
goto %text%
<--- in meinem Beispiel springt das entweder nur zu text0 oder text1, weil ich ja nur %%2 hab ^^

ich glaube man könnte das alles wahrscheinlich vllt sehr leicht vereinfachern und auch , dass es bei dir jedes mal 3 Texte aus Zufall angezeigt wird , das von mir war nur ein kurzes Beispiel gewesen, wie man schnell einen Text aus Zufall darstellt, aber du willst eigentlich ja 3 :D

vllt könnte dir ja [UPS]Erazor #8 ja besser helfen, also mit
1.@echo off
2.setlocal ENABLEDELAYEDEXPANSION
3.set spruch_12=Test
4.set num=12
5.echo !spruch_%num%!
Ergänzung ()

Langsam aber sicher finde ich batch sehr interessant
:D naja, für so was hätten viele einfach eine Programmiersprache genommen und ein paar Zeilen geschrieben :D
 
Schau dir mal Powershell an:

$min_Schulungskennung = 21
$max_Schulungskennung = 32
while(1) {
$random = Get-Random -Maximum $max_Schulungskennung -minimum $min_Schulungskennung
echo "Wir haben eine(n) Freiwillige(n) gefunden!"
echo "Teilnehmer(in) mit der Schulungskennung $random wurde bestimmt!"
Cmd /c pause
clear
}
 
Hi, unten ist meine Lösung mit der von oiisamiio integriert.

Die Texte für die jeweiligen Sprüche ("Spruch Nr. 1"... etc) kannst du ja selbst anpassen.
Du hast ja 18 Sprüche erwähnt.
Dann bitte die Variable "anzahl" entsprechend anpassen.


Code:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set spruch_0=Spruch Nr. 0
set spruch_1=Spruch Nr. 1
set spruch_2=Spruch Nr. 2
set spruch_3=Spruch Nr. 3
set spruch_4=Spruch Nr. 4
set spruch_5=Spruch Nr. 5
set spruch_6=Spruch Nr. 6
set spruch_7=Spruch Nr. 7
set spruch_8=Spruch Nr. 8
set spruch_9=Spruch Nr. 9
set spruch_10=Spruch Nr. 10
set spruch_11=Spruch Nr. 11
set spruch_12=Spruch Nr. 12
set spruch_13=Spruch Nr. 13
set anzahl=14
:a
set /a r=%random% %%11
if %r%==0 (set a=21 & goto 1)
if %r%==1 (set a=22 & goto 1)
if %r%==2 (set a=23 & goto 1)
if %r%==3 (set a=24 & goto 1)
if %r%==4 (set a=25 & goto 1)
if %r%==5 (set a=26 & goto 1)
if %r%==6 (set a=27 & goto 1)
if %r%==7 (set a=28 & goto 1)
if %r%==8 (set a=29 & goto 1)
if %r%==9 (set a=30 & goto 1)
if %r%==10 (set a=31 & goto 1)
if %r%==11 (set a=32 & goto 1)
:1
cls


set /a num=%random% %%%anzahl%


Color f
REM ping -n x in Sekunden
echo. !spruch_%num%!
ping localhost -n 3 >nul


set /a num=%random% %%%anzahl%
echo. !spruch_%num%!
ping localhost -n 4 >nul


set /a num=%random% %%%anzahl%
echo. !spruch_%num%!
ping localhost -n 3 >nul
echo.
echo Wir haben eine(n) Freiwillige(n) gefunden!
echo.
echo.
echo Teilnehmer(in) mit der Schulungskennung %a%wurde bestimmt!
echo. 
echo.
pause
goto a
 
Zuletzt bearbeitet: (Noch mehr Schmarrn korrigiert.)
Zurück
Oben