Batch Zufallsgenerator für Witze?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

(1) Erkennen der Frage nach einem Witz.

Da du anscheinend schon einen funktionierenden Chatbot hast, sollte das ja recht einfach gehen. Du musst also nur z.B. die Keywords Witz, lustig, etc. hinzufügen.

(2) Metadaten über deine Witzdatei erfassen.

Du brauchst hier lediglich die Anzahl an Zeilen, um dir später dann eine davon zufällig aussuchen zu können. Mit einer for-Schleife kannst du die ganz simpel zählen.

(3) Eine Zeile zufällig auswählen.

Die durch %random% generierte Zufallszahl auf den hier benötigten Zahlenbereich von [1; Zeilenlänge] bringen. Sehr simple, wenn auch nicht optimale Methode hierfür wäre:

set /a selectedLine=%random% %% lines + 1

(4) Die Zeile ausgeben.

Du traversierst hierfür alle Zeilen deiner Witze-Datei und gibst die Zeile mit der zuvor berechneten Zeilennummer aus. Dies kannst du mithilfe von findstr /n, mit einer Hilfsvariable oder mittels dekrementieren der selectedLine-Variable erledigen.

Die Schritte 2 bis 4 habe ich in dieser Antwort schon für Verzeichnisse umgesetzt:

https://www.gutefrage.net/frage/cmd-zufaelliges-wort#answer-347286974

Du musst die for-Schleifen also nur noch anpassen, dass sie sich auf Textdateien beziehen.

Batch ist nur sehr eingeschränkt fähig Texte zu verarbeiten. Die Steuerzeichen &|<>^"()!~*? können nicht ohne größeren Aufwand eingelesen/angezeigt werden.

Die Selektion/Suche bestimmter Zeilen/Abschnitte in Textdateien ist in Batch nicht ohne unverhältnismäßigen Aufwand möglich.

Batch hat bekannte Probleme mit nationalen Sonderzeichen wie Umlauten und Zeichen mit ASCII-Code <32 >127.

Machbar ist alles, allerdings sollte man für ein Vorhaben wie das Deine weit jenseits des Anfängerlevels sein.

Selbst jemand wie ich würde dafür eher eine Sprache wie C#, Java, Python, , JScript wählen ... oder (bedingt) Powershell (Probleme mit nationalen Sonderzeichen).

Mit Batch kann man keinen Bot programmieren! Dazu sind Programmiersprachen mit Zugriff auf interne Systemfunktionen nötig (C-sprachen, Python etc. (Powershell kann das zwar auch, hat jedoch die oben erwähnte Problematik mit Unicodezeichen...).

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren