Board logo

标题: [文本处理] 批处理如何将一个文本的每一行内容随机打乱顺序后赋值给变量 [打印本页]

作者: 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找到一个很像虽要的代码。但不是随机。每次。都是指定的第几行
  1. @Echo off
  2. For /F "tokens=1* delims=:" %%i In ('Findstr /n .* ip.txt') Do Set "_%%i=%%j"
  3. Echo %_5%
  4. Echo %_1%
  5. Echo %_6%
复制代码

作者: yajiu    时间: 2017-3-18 05:00

没人能帮下吗
作者: terse    时间: 2017-3-18 19:25

本帖最后由 terse 于 2017-3-18 19:26 编辑

回复 3# yajiu
  1. @echo off&setlocal enabledelayedexpansion
  2. if "%~1"=="" (
  3.    for /f "tokens=1*" %%i in ('%0 $^|sort') do set "str=%%j"
  4.    echo;!str!
  5.    pause&exit
  6. ) 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
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (ip.txt) do set  "_!random!!random!!random!=%%i"
  3. for /f "tokens=1*delims==" %%a in ('set _') do set /a n+=1&set _!n!=%%b
  4. for /l %%a in (1,1,%n%) do echo;!_%%a!
  5. 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://www.bathome.net/) Powered by Discuz! 7.2