联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
::如果每行中间的那个数字是序号的话,可以用 Findstr 随机找出。 @echo off & Title 变量随机定义 Setlocal EnableDelayedExpansion ::查找文件里的有效数据有多少行: For /f %%a in ('findstr "^WKS" File.txt ') do (set /a N+=1) Echo File.txt 文件共有 !N! 行有效数据! ::设置随机数,并用 Findstr 找出 行中间有对应数的那一行。 set /a Line=%Random% %% !N! +1 For /f "tokens=1-3" %%a in ('findstr " %Line% " File.txt ') do ( set "One=%%a" set "Two=%%b" set "Thr=%%c" ) echo %One% echo %Two% echo %Thr% Endlocal Pause
::如果每行中间的那个数字不是序号,而是个不定数的话。 @echo off & Title 变量随机定义 Setlocal EnableDelayedExpansion ::查找文件里的有效数据有多少行,并为每行加上行号: (For /f "delims=" %%a in ('findstr "^WKS" File.txt ') do (set /a N+=1 & echo !N! %%a) ) > NewFile.txt Echo NewFile.txt 文件共有 !N! 行有效数据! ::设置随机行数,并用 Findstr 找出对应行。 set /a Line=%Random% %% !N! +1 For /f "tokens=2-4" %%a in ('findstr "^%Line% " NewFile.txt ') do ( set "One=%%a" set "Two=%%b" set "Thr=%%c" ) echo %One% echo %Two% echo %Thr% Endlocal Pause
::如果文件内容都是纺一格式(没有多余信息行),每行中间的数是不定数的话。 @echo off & Title 变量随机定义 Setlocal EnableDelayedExpansion ::查找文件里有多少行 For /f "delims=" %%a in (File.txt) do set /a N+=1 Echo File.txt 文件共有 !N! 行! ::设置随机行数 set /a Line=%Random% %% !N! +1 For /f "tokens=1-3" %%a in (File.txt) do ( set /a num+=1 if !num! == !Line! (set "One=%%a" & set "Two=%%b" & set "Thr=%%c") ) echo %One% echo %Two% echo %Thr% Endlocal Pause