Cmd zufälliges Wort?

Erzesel  26.04.2020, 16:06

als Variable oder in eine Variable?

  • als Variable wäre ute.txt ergibt variable ute=...
  • in eine Variable ute.txt ergibt variable Meine Datei=ute


WitherHD 
Fragesteller
 26.04.2020, 16:07

in einer Variable

3 Antworten

Hier mal eine kurze und hoffentlich leicht verständliche, wenn auch nicht äußerst effiziente oder elegante Lösung:

@echo off & setlocal enableDelayedExpansion

for %%F in (*.txt) do set /a i += 1
set /a rndm=%random% %% i + 1
for %%F in (*.txt) do (
	if !rndm! equ !i! set "filename=%%~nF"
	set /a i -= 1
)

Mit der ersten for-Schleife zählst du lediglich wie viele Textdateien das aktuelle Directory enthält. Dann suchst du dir eine zufällige Zahl zwischen 1 und i (=Anzahl der Textdateien) aus. Jetzt gehst du wieder alle Textdateien durch und zählst runter, bis du bei der zufällig ausgesuchten Datei angekommen bist. Den Namen dieser kannst du nun z.B. in der Variable `filename` speichern.

Also meines Wissens kann man das nicht mit cmd. Mit cmd kannst du guvken, welche Dokumente drin sind, als auch Dokumente mit der Dateiendung .txt

Aber zufällig da ne Datei rauszusuchen.... Keine ahnung sorry.

Aber mit dem Befehl dir kannst du gucken welche Dokumente drin sind und die nach txt filtern.


 rem demodateien in ordner schreiben
md "Mein Ordner" 2>nul
(echo irgendwas)>"Mein Ordner\franz.txt"
(echo irgendwas)>"Mein Ordner\max.txt"
(echo irgendwas)>"Mein Ordner\elfriede.txt"
(echo irgendwas)>"Mein Ordner\hugo.txt"

 rem ordner nach Textdateien Durchsuchen.
 rem finde und numeriere alles was nicht "Nichts" ist (Batchlogik "nicht Nichts"=alles)
 rem trenne und entferne eckige Klammern (Nummerierung von find)
for /f "tokens=1* delims=[]" %%a in ('"dir /b "Mein Ordner\*.txt"|find /n /v "" "') do (
   rem mal Anzeigen...
  echo Nummer=%%a  DateiName=%%~b
   rem all Namen von gefundenen Txt-Dateien in ein Array speichern....
  set "dateiName.%%a=%%~b"
   rem wird für jede neue Nummerierung erneuert... 
  set "count=%%a"
)

 rem zufallszahl zwischen 1 und %count% ermitteln
set /a "MeinRandom=%random% %% count +1"
 rem zeigen...
echo %MeinRandom%
 rem ich wollte Dich noch nicht mit DelayedExpansion überfahren.. darum die alte Methode
call set "MeineDatei=%%dateiName.%MeinRandom%%%
echo ich habe #%MeineDatei%# ausgewaehlt
pause

.. ...da dürfte dier die Birne einigemaßen Qualmen.

Ich denke ma das soll eine Art Textadventure werden?

bevor Du Dich so richtig weit vorwagst, möchte ich Dir einen kleinen Dämpfer verpassen. Batch ist für sowas total ungeeignet 😱

Das ist nur der Anfang und Batch kann höllischen Ärger machen, wenn es richtig komplex wird. Batch ist eine Sprache zur Steuerung von administrativen Abläufen und kann nur sehr eingeschränkt mit Texten umgehen.

Auch wen Batch meine spezialstrecke ist kann ich Dir nur raten auf HTML/JavaScript oder Python , zur Not auch Powershell umzusatteln bevor Du zuviel energie in etwas steckst, was sich bald nicht mehr beherrschen lässt.

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