Batch file 在标记中选择更多单词
我试着从单词和句子列表中选择一个随机事件。每当事件发生时,它只显示每行中的第一个单词。如何使其显示整行 这是批处理文件Batch file 在标记中选择更多单词,batch-file,random,token,Batch File,Random,Token,我试着从单词和句子列表中选择一个随机事件。每当事件发生时,它只显示每行中的第一个单词。如何使其显示整行 这是批处理文件 set /a groceryrandom=%random%%%16 for /f "tokens=1,2" %%a in (groceryevents.txt) do if %groceryrandom%==%%a echo %%b 这是文本文件及其引用 1 Nothing 2 Nothing 3 "You have gained 1 survivor!" 4 Nothing
set /a groceryrandom=%random%%%16
for /f "tokens=1,2" %%a in (groceryevents.txt) do if %groceryrandom%==%%a echo %%b
这是文本文件及其引用
1 Nothing
2 Nothing
3 "You have gained 1 survivor!"
4 Nothing
5 Nothing
6 "You have lost 1 survivor!"
7 Nothing
8 Nothing
9 "You have gained 1 survivor!"
10 Nothing
11 Nothing
12 "You have found 1 weapon!"
13 Nothing
14 Nothing
15 "You have found 5 ammo!"
更直接的方法是使用findstr直接选择线
@echo off
set /a groceryrandom=%random% %% 15 +1
for /f "tokens=1*" %%A in ('
findstr /BC:"%groceryrandom% " groceryevents.txt
') do echo %%B
运行示例:
> Q:\Test\2019\01\25\SO_54372977.cmd
Nothing
> Q:\Test\2019\01\25\SO_54372977.cmd
"You have lost 1 survivor!"
> Q:\Test\2019\01\25\SO_54372977.cmd
Nothing
> Q:\Test\2019\01\25\SO_54372977.cmd
Nothing
> Q:\Test\2019\01\25\SO_54372977.cmd
Nothing
更直接的方法是使用findstr直接选择线
@echo off
set /a groceryrandom=%random% %% 15 +1
for /f "tokens=1*" %%A in ('
findstr /BC:"%groceryrandom% " groceryevents.txt
') do echo %%B
运行示例:
> Q:\Test\2019\01\25\SO_54372977.cmd
Nothing
> Q:\Test\2019\01\25\SO_54372977.cmd
"You have lost 1 survivor!"
> Q:\Test\2019\01\25\SO_54372977.cmd
Nothing
> Q:\Test\2019\01\25\SO_54372977.cmd
Nothing
> Q:\Test\2019\01\25\SO_54372977.cmd
Nothing
更简单:
@echo off
set /a groceryrandom=%random%%%15 + 1
for /f "tokens=1* skip=%groceryrandom%" %%a in (groceryevents.txt) do echo %%~b & goto continue
:continue
我在数据文件中添加了一行0 Nothing
。更简单:
@echo off
set /a groceryrandom=%random%%%15 + 1
for /f "tokens=1* skip=%groceryrandom%" %%a in (groceryevents.txt) do echo %%~b & goto continue
:continue
我在数据文件中添加了一个
0 Nothing
行…tokens=1,2*
请参见获取/?
。如果%groceryrandom%
=0
,会发生什么情况?为什么不在(groceryevents.txt)中使用,for/f“tokens=1*”%%a如果%groceryrandom%%==%%a echo%%b,我应该删除15行并将其设置为0-14行吗?然后将随机数更改为%%15?@Nate,请参考您已接受的答案。tokens=1,2*
请参见获取/?
。如果%groceryrandom%
=0
,会发生什么情况?为什么不在(groceryevents.txt)中使用,for/f“tokens=1*”%%a如果%groceryrandom%%==%%a echo%%b,我应该删除15行并将其设置为0-14行吗?然后将随机数更改为%%15?@Nate,请参考您已接受的答案。