[英]Pick a random line from a file in a batch file
我正在嘗試制作一個Character_Picker.bat
,以回顯從characters.txt
隨機選擇的字符串作為長文本文件。 我不知道如何隨機選擇。
Characters.txt:
Disco Jockey Acid Pol
Double Agent Acid Pol
Muaythai Acid Pol
Paramedic Acid Pol
WWII Acid Pol
WWII Acid Pol
PB Quinn Chou
Secret Agent Chou
Rider Chou
General Chou
Grim Reaper Chou
Psycho Nurse Chou
Highschool Chou
Invasion Chou
Army Agent Chou
Kung Fu Chou
Rogue Agent Chou
Sweet Heart Chou
.
.
.
.333 strings more
我的批處理代碼:
@echo off
color a
cd Desktop
start "characters.txt" ==> this is the thing where I stuck
set /a string=%random% %% 334
echo %string%
我想這就是你想要的。
@echo off
set /a rand=%random% %% 334
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "d:\characters.txt"') do (
if "%%i"=="%rand%" echo %%j
)
我們設置rand
並將隨機數限制為334。然后,我們讀取文件並找到行號,如果該數字與隨機字符串匹配,則打印該字符串。
只是為了您了解delims=:
部分。 findstr /n .* "d:\\characters.txt"
將打印行號,然后是冒號和實際行。 就像是:
1:Disco Jockey Acid Pol
2:Double Agent Acid Pol
3:Muaythai Acid Pol
4:Paramedic Acid Pol
5:WWII Acid Pol
....
delims=:
使用:
作為分隔符,我們將行號分配給%%i
,將實際行文本分配給%%j
因此將%%i
與%rand%
匹配,然后打印%%j
首先,我將確定文本文件中的行數,然后確定該范圍內的隨機數,然后准確地提取此行,如下所示:
@echo off
for /F %%C in ('^< "characters.txt" find /C /V ""') do set "COUNT=%%C"
set /A "NUMBER=%RANDOM%%%%COUNT%"
if %NUMBER% gtr 0 (set "SKIP=skip=%NUMBER%") else (set "SKIP=")
for /F usebackq^ %SKIP:skip=skip^%^ delims^=^ eol^= %%L in ("characters.txt") do (
echo(%%L
goto :NEXT
)
:NEXT
如果目標行為空,則此代碼將返回下一個非空行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.