julian57
Goto Top

Batch Begriffe in zufälliger reinvollge ausgeben. Problem keine Doppelten

Hallo,
und zwar ich habe ein kleines Problem mit einen Batch,
ich will ein Script schreiben was mir in zufälliger Reinfolge definierte Begriffe ausgibt, wobei er keine Doppelten ausgeben soll.
Hier meinen ersten Ansatz:

@echo off
set y1=0
set y2=0
set y3=0
set y4=0
set y5=0
set y6=0
set y7=0
set y8=0
set Zähler=0
:1
cls
set /a zz=%random% %% 8 + 1
If %zz%==1 (set x=begriff1 & set /a y1=%y1%+1)
If %zz%==2 (set x=begriff2 & set /a y2=%y2%+1)
If %zz%==3 (set x=begriff3 & set /a y3=%y3%+1)
If %zz%==4 (set x=begriff4 & set /a y4=%y4%+1)
If %zz%==5 (set x=begriff5 & set /a y5=%y5%+1)
If %zz%==6 (set x=begriff6 & set /a y6=%y6%+1)
If %zz%==7 (set x=begriff7 & set /a y7=%y7%+1)
If %zz%==8 (set x=begriff8 & set /a y8=%y8%+1)
If %y1% GEQ 2 (goto 1)
If %y2% GEQ 2 (goto 1) 
If %y3% GEQ 2 (goto 1)
If %y4% GEQ 2 (goto 1) 
If %y5% GEQ 2 (goto 1) 
If %y6% GEQ 2 (goto 1) 
If %y7% GEQ 2 (goto 1)
If %y8% GEQ 2 (goto 1)
echo.
echo %x%
echo.
set /a Zähler=%Zähler%+1
if %Zähler%==8 (goto 2)
pause
goto 1
:2
cls
echo.
echo keine Begriffe mehr vorhanden
echo.
pause
exit

Leider funktioniert das Script nocht nicht ganz wie Ich es mir es vorstelle
Es gibt mir erst mal ein paar Begriffe aus aber wenn es einen doppelten Begriff findet bleibt es hängen und flakert und gibt nichts mehr aus
Ich weiß nicht woran es liegt
Bitte postet meinen Fehler, oder auch wenn ihr nur eine Ahnung habt woran es liegen könnte
Ich hoffe sowas ist überhaupt realisierbar!!!
Vieleicht kennt ihr eine bessere Lösung wie man so was lösen könnte, postet sie dann auch.
Über eine funktionierende Lösung wäre ich sehr dankbar.

mfg

Julian57

Content-Key: 153372

Url: https://administrator.de/contentid/153372

Printed on: April 19, 2024 at 09:04 o'clock

Member: Friemler
Friemler Oct 19, 2010 at 13:03:10 (UTC)
Goto Top
Hallo Julian57,

Dein Fehler war folgender: Die Zeilen
If %yX% GEQ 2 (goto 1)
hätten
If %yX% GEQ 2 (set /a "yX=yX-1" & goto 1)
lauten müssen.

Außerdem war der erste PAUSE-Befehl falsch platziert, sodass der letzte Begriff durch CLS wieder vom Bildschirm verschwand.

Hier mal eine etwas eingedampfte Version Deines Skripts. Bei Verständnisfragen bitte melden.
@echo off

setlocal


set "begriff1=Wort1"  
set {{comment_strings:21812380287}} 
set "begriff3=Wort3"  
set {{comment_strings:12381004378}} 
set "begriff5=Wort5"  
set {{comment_strings:2923059618}} 
set "begriff7=Wort7"  
set "begriff8=Wort8"  

set /a "y1=0,y2=0,y3=0,y4=0,y5=0,y6=0,y7=0,y8=0"  
set Zaehler=0


:1
cls

set /a zz=%random% %% 8 + 1

for /f {{comment_strings:1804194514}} %%c in ('set y%zz%') do (  
  if %%c equ 1 goto 1
)

call set "x=%%begriff%zz%%%"  
set /a "y%zz%+=1"  

echo.
echo %x%
echo.
pause

set /a Zaehler+=1
if %Zaehler% lss 8 goto 1


:2
cls
echo.
echo keine Begriffe mehr vorhanden
echo.

pause

Gruß
Friemler
Member: Julian57
Julian57 Oct 19, 2010 at 13:16:26 (UTC)
Goto Top
Hallo,

Super funktioniert,
danke dir

mfg

Julian57
Member: H41mSh1C0R
H41mSh1C0R Dec 27, 2010 at 09:00:26 (UTC)
Goto Top
Wenn alles funktioniert, dann bitte noch den grünen Haken setzen damit man das in der Übersicht sieht.

VG