标题: [文本处理] 批处理如何将一个文本的每一行内容随机打乱顺序后赋值给变量 [打印本页]
作者: yajiu 时间: 2017-3-16 04:16 标题: 批处理如何将一个文本的每一行内容随机打乱顺序后赋值给变量
比如。我有一个文本.里面有未知的行数. 我想用批处理读取了文本里的每一行内容.
然后随机打乱每一行 每一行都生成一个不会重复的变量
比如.文本有100行.我要这100个变量. 这100个变量用什么来输出的.
ehco 第1个变量
ehco 第2变量 直到..............
ehco 第100个变量
文本是这样的
192.168.0.7
192.168.0.8
192.168.0.9
192.168.0.10
192.168.0.11
192.168.0.12
192.168.0.13
192.168.0.14
192.168.0.15
192.168.0.16
作者: yajiu 时间: 2017-3-17 04:29
回复 1# yajiu
在BBS找到一个很像虽要的代码。但不是随机。每次。都是指定的第几行- @Echo off
- For /F "tokens=1* delims=:" %%i In ('Findstr /n .* ip.txt') Do Set "_%%i=%%j"
- Echo %_5%
- Echo %_1%
- Echo %_6%
复制代码
作者: yajiu 时间: 2017-3-18 05:00
没人能帮下吗
作者: terse 时间: 2017-3-18 19:25
本帖最后由 terse 于 2017-3-18 19:26 编辑
回复 3# yajiu - @echo off&setlocal enabledelayedexpansion
- if "%~1"=="" (
- for /f "tokens=1*" %%i in ('%0 $^|sort') do set "str=%%j"
- echo;!str!
- pause&exit
- ) else for /f "delims=" %%i in (ip.txt) do echo;!random!!random!!random! %%i
复制代码
作者: yajiu 时间: 2017-3-18 23:34
本帖最后由 yajiu 于 2017-3-19 02:45 编辑
请问。每行的内容是用什么变量 来表示的
楼上的批处理 就是我所要的。但只显示读取一行。我要显示多行。随机内容。
我要每一行的变量。
Echo %_1%
Echo %_2%
........不知怎么搞
我不是每次只要一个变量。
echo;!str!
比如文本有100行。我想要100个变量。请问怎么用echo输出的
我想要每一行都有一个变量
作者: terse 时间: 2017-3-19 22:22
请问。每行的内容是用什么变量 来表示的
楼上的批处理 就是我所要的。但只显示读取一行。我要显示多行。 ...
yajiu 发表于 2017-3-18 23:34
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (ip.txt) do set "_!random!!random!!random!=%%i"
- for /f "tokens=1*delims==" %%a in ('set _') do set /a n+=1&set _!n!=%%b
- for /l %%a in (1,1,%n%) do echo;!_%%a!
- pause
复制代码
作者: yajiu 时间: 2017-3-19 22:56
回复 6# terse
我要每一行.的内容.用一个变量 来显示. 不是一下次全部显示出来.555555555
我要每一行的变量.我要那个变量.
比如.第一行的内容.可以有一个变量.每二行的内容有一个变量
作者: ShowCode 时间: 2017-3-19 23:11
回复 7# yajiu
是这个意思吗?
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (ip.txt) do set "_!random!!random!!random!=%%i"
for /f "tokens=1*delims==" %%a in ('set _') do set /a n+=1&set _!n!=%%b
for /l %%a in (1,1,%n%) do echo 第%%a个变量:!_%%a!
pause
也许是这个意思?
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (ip.txt) do set "_!random!!random!!random!=%%i"
for /f "tokens=1*delims==" %%a in ('set _') do set /a n+=1&set _!n!=%%b
for /l %%a in (1,1,%n%) do (
echo 第%%a个变量:!_%%a!
pause
)
pause
作者: yajiu 时间: 2017-3-19 23:22
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (ip.txt) do set "_!random!!random!!random!=%%i"
for /f "tokens=1*delims==" %%a in ('set _') do set /a n+=1&set _!n!=%%b
for /l %%a in (1,1,%n%) do (
echo; 我在这:!_%%a!
)
Echo %_10%
Echo %_12%
Echo %_16%
pause
这样行了.我要的就是 %_16% %_10% 这个变量
作者: yajiu 时间: 2017-3-26 02:23
回复 4# terse
很想再请问.如何产生一个 大于3而小于60的随机数.
当这个随机=10时
重复执行 执行10次
echo;!str!
这个!str! 值.每次都是不一样的.
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |