Ich habe ein Textdokument voller 1000 Namen, mit einem in jeder Zeile. Ich möchte in der Lage sein, eine Variable zu setzen, um einem dieser Namen zufällig zu entsprechen. Wie würde ich das ausführen? Vielen Dank.Batch Random Name Generator
Antwort
Selbst wenn dies nicht streng ist nach den Regeln, da Sie eine spec zur Verfügung gestellt haben, ohne jeden Versuch zeigt, das Problem zu lösen,
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q44.txt"
:: detect number of entries in file
FOR /f %%a IN ('type "%filename1%"^|find /c /v ""') DO SET count=%%a
SET /a maxselect=(32767/count) * count
:reselect
SET /a selection=%RANDOM%
IF %selection% geq %maxselect% GOTO reselect
SET /a selection=(selection %% count)+1
FOR /f "tokens=1*delims=[]" %%a IN (
'type "%filename1%"^|find /n /v ""'
) DO IF %%a==%selection% SET "selection=%%b"
ECHO %selection%
GOTO :EOF
Sie benötigen würden die Einstellung von sourcedir
ändern anpassen deine Umstände.
verwendete ich eine Datei mit dem Namen q44.txt
einige Dummy-Daten für meine Tests enthält.
Verwenden Sie zuerst find
die Anzahl der Zeilen in der Datei zu zählen.
Da der Zufallszahlengenerator von 0..32767 reicht, tüfteln Sie mit maxselect
(die Berechnung wird mechanisch durchgeführt, nicht optimiert), so dass ein maximaler Wert für den RNG ermittelt wird. Wenn zum Beispiel 1.000 Zeilen in der Datei vorhanden sind, hat ein Bereich von 0..32767 mod 1000 eine etwas höhere Chance, 0..767 als von 768..999 zu liefern. Durch die Begrenzung des Bereichs auf 0..31999 sind die Chancen einer bestimmten Wahl so linear wie der RNG.
Sobald eine geeignete Auswahl im Bereich 1 .. count
getroffen wurde, lesen Sie die Datei erneut, diesmal mit find
, um jede Zeile in Klammern zu nummerieren. Da delims
die Klammern, wird %%a
die Zeilennummer erwerben und %%b
(seit zwei Token ausgewählt sind, 1
und *
und %%b
gelingt es dem nominierten %%a
) wird auf den Namen auf die entsprechende Zeile eingestellt werden. Wenn %%a
mit selection
übereinstimmt, setzen Sie selection
auf den Namen.
(Das ist nur meine Geschichte in Assembler-Sprache zu übernehmen - Wiederverwendung des Variable, da sie einen passenden Namen haben)
Ein möglicher Weg ist die Anzahl der Zeilen der Textdatei zu zählen, dann stellen Sie die skip
Option eines for /F
loop dynamisch und nur eine einzige Zeile zu lesen, nur:
for /F %%C in ('^< ".\textfile.txt" find /C /V ""') do set /A "COUNT=%%C"
if %COUNT% LEQ 0 (set /A "NUMBER=0") else (set /A "NUMBER=%RANDOM%%%%COUNT%")
if %NUMBER% LEQ 0 (set "SKIP=") else (set "SKIP=skip=%NUMBER%")
for /F "usebackq %SKIP% delims=" %%L in (".\textfile.txt") do (
set "LINE=%%L"
goto :CONT
)
:CONT
echo(%LINE%
Statt for /F
die Zeile zu lesen, können Sie auch input redirection verwenden:
for /F %%C in ('^< ".\textfile.txt" find /C /V ""') do set /A "COUNT=%%C"
if %COUNT% LEQ 0 (set /A "NUMBER=0") else (set /A "NUMBER=%RANDOM%%%%COUNT%+1")
< ".\textfile.txt" (
for /L %%I in (1,1,%NUMBER%) do (
set "LINE=" & set /P LINE=""
)
)
echo(%LINE%
- 1. Batch File Downloader: Name Generator
- 2. Random Quiz Generator
- 3. Distributed Random Number Generator
- 4. Random Season Generator
- 5. Java Random Password Generator Problem
- 6. Random Passwort Generator Swift 3?
- 7. C# Random Number Generator Fehler
- 8. OpenERP Name Generator
- 9. Name Generator für .NET
- 10. Random Number Generator C++ Dynamic Array
- 11. Python Random Number Generator numpy_rng.random_integers (1E10)) OverflowError
- 12. Random String Generator Javascript - While Schleife
- 13. RANDOM TEXT GENERATOR FEHLER MIT JAVASCRIPT
- 14. PHP Random String Generator ... nicht so zufällig
- 15. Random Number Generator wiederholt sich in Simulink
- 16. Store Ergebnisse von Random-Satz-Generator
- 17. Get ex Name neben Batch-Datei
- 18. Baffling Inline-Verhalten von Random Number Generator Wrapper (C++)
- 19. Unerwartete EOF beim Parsing in Python Random-Satz-Generator
- 20. Random-Code-Generator von API - Variable funktioniert nicht im Code?
- 21. Random String-Generator von JavaScript für Kinder Herausforderung
- 22. Random Number Generator erzeugt immer die gleichen Zahlen
- 23. C# Random Letter Generator in 2D-Array - Probleme
- 24. einprägsamer Name Generator Juwel für Rubin
- 25. PHP versucht, automatisch zu laden Random Class Name
- 26. Wie%% random in eine neue Batch-Datei mit einer Batch-Datei?
- 27. Name Generator ausführlichen Code; Suche nach präzisen & schönen Lösungen
- 28. JZOS Batch-Toolkit - Die Integration des JZOS Cobol Rekord Generator
- 29. Random Binary in JavaScript/Node.JS
- 30. Zufallsgenerator Wort Generator - PHP
Was haben Sie bisher versucht, wo bist du stecken? – aschipfl