List 如何从txt文件中获取一个随机单词,并将其设置为批量变量

List 如何从txt文件中获取一个随机单词,并将其设置为批量变量,list,batch-file,for-loop,cmd,List,Batch File,For Loop,Cmd,很抱歉,如果以前有人问过这个问题,我找不到专门针对这个问题的任何东西 我有一个list.txt,每行有一个新词,比如 do re me fa something somethingelse 如何获取一个随机单词(假设列表中有随机数量的行)并将其设置为%变量% 我很确定我需要“for”命令,但我不知道如何使用它 谢谢 编辑:我的坏,我应该在Windows批处理中指定此选项尝试此选项(您必须更改第三行文件的路径): 更新: @echo off setlocal set "file=words.tx

很抱歉,如果以前有人问过这个问题,我找不到专门针对这个问题的任何东西

我有一个list.txt,每行有一个新词,比如

do
re
me
fa
something
somethingelse
如何获取一个随机单词(假设列表中有随机数量的行)并将其设置为%变量%

我很确定我需要“for”命令,但我不知道如何使用它

谢谢

编辑:我的坏,我应该在Windows批处理中指定此选项尝试此选项(您必须更改第三行文件的路径):

更新:

@echo off
setlocal
set "file=words.txt"

for /f %%# in (
    'findstr  /r /n "^" "%file%" ^|find /c ":"'
) do (
    set lines=%%#
)

set /a random_line=random_line=%random% %% %lines%

if random_line==0 (
    set "skip="
) else (
    set "skip=skip=%random_line%"
)

for /f "usebackq %skip%" %%# in ("%file%") do (
    set "random_word=%%#"
    goto :break
)   
:break

echo %random_word%
endlocal

对于PowerShell,这是一个很简单的
PowerShell-NoP-C“获取内容。\file.txt | Get Random”
可以很容易地打包成一批。标题应该要求随机行而不是单词。实际上只是一个快速的改进,将随机行部分更改为此,这样更可靠
set/a“random\u line=%random%%%%%lines%”
您必须以不同的方式处理该案例,因为/F的
不接受
跳过=0
选项…@aschipfl-啊,是的,如果条件满足,我必须添加一个。已更新。。。。。。。。
@echo off
setlocal
set "file=words.txt"

for /f %%# in (
    'findstr  /r /n "^" "%file%" ^|find /c ":"'
) do (
    set lines=%%#
)

set /a random_line=random_line=%random% %% %lines%

if random_line==0 (
    set "skip="
) else (
    set "skip=skip=%random_line%"
)

for /f "usebackq %skip%" %%# in ("%file%") do (
    set "random_word=%%#"
    goto :break
)   
:break

echo %random_word%
endlocal