标题: [文本处理] 批处理怎样随机读取一行文本内容? [打印本页]
作者: lijinpengying 时间: 2013-8-1 11:10 标题: 批处理怎样随机读取一行文本内容?
亲爱的大大些,我又来麻烦各位了。
我有一个文本,里面有若干行内容,现在就是想随机显示其中一行。我的代码不对劲啊!- @echo off&setlocal enabledelayedexpansion
- for /f %%i in (123.txt) do (
- set /a num+=1
- set /a num2=!random! %% 100
- if !num2! leq !num! echo %%i
- )
- pause
复制代码
这代码是随机显示的,有可能什么也不显示,有可能显示几行……
求教!
作者: gawk 时间: 2013-8-1 11:45
set /a num2=!random! %% 100
这一行的目的是什么?
作者: canyuexiaolang 时间: 2013-8-1 12:32
本帖最后由 canyuexiaolang 于 2013-8-1 12:52 编辑
- @echo off
- for /f "tokens=* delims=" %%i in (123.txt) do set /a num+=1
- ::获取123.txt的总行数避免行数超过
- set /a linenum=%random%%%num%
- ::随机生成行数小于等于总行数
- for /f "skip=%linenum% tokens=* delims=" %%i in (123.txt) do if not defined a (echo %%i&set "a=0")
- ::获取一行后定义a变量以免获取多行
- pause
复制代码
作者: PowerShell 时间: 2013-8-1 14:40
本帖最后由 PowerShell 于 2013-8-1 14:42 编辑
powershell 代码- Get-Random -InputObject (Get-Content d:\123.txt)
复制代码
每次随机输出一行,这样就可以赋值- $aaa = Get-Random -InputObject (Get-Content d:\123.txt)
复制代码
作者: batman 时间: 2013-8-2 08:02
本帖最后由 batman 于 2013-8-2 08:03 编辑
- @echo off
- for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do set "_%%a=%%b"&set /a n=%%a
- set /a a=%random% %% %n%+1
- call,echo,%%_%a%%%
- pause>nul
复制代码
作者: CrLf 时间: 2013-8-2 16:18
第三方 shuf.exe:复制代码
gnu sort 7.6 也很给力:复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |