找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30385|回复: 9

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

[复制链接]
发表于 2017-3-16 04:16:24 | 显示全部楼层 |阅读模式
比如。我有一个文本.里面有未知的行数. 我想用批处理读取了文本里的每一行内容.
然后随机打乱每一行 每一行都生成一个不会重复的变量

比如.文本有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
 楼主| 发表于 2017-3-17 04:29:52 | 显示全部楼层
回复 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%

复制代码
 楼主| 发表于 2017-3-18 05:00:02 | 显示全部楼层
没人能帮下吗
发表于 2017-3-18 19:25:32 | 显示全部楼层
本帖最后由 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
复制代码
 楼主| 发表于 2017-3-18 23:34:34 | 显示全部楼层
本帖最后由 yajiu 于 2017-3-19 02:45 编辑

请问。每行的内容是用什么变量 来表示的
楼上的批处理 就是我所要的。但只显示读取一行。我要显示多行。随机内容。
我要每一行的变量。 

Echo %_1%
Echo %_2%

........不知怎么搞

我不是每次只要一个变量。
echo;!str!

比如文本有100行。我想要100个变量。请问怎么用echo输出的
我想要每一行都有一个变量
发表于 2017-3-19 22:22:46 | 显示全部楼层
请问。每行的内容是用什么变量 来表示的
楼上的批处理 就是我所要的。但只显示读取一行。我要显示多行。 ...
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
复制代码
 楼主| 发表于 2017-3-19 22:56:14 | 显示全部楼层
回复 6# terse

   
    我要每一行.的内容.用一个变量 来显示. 不是一下次全部显示出来.555555555

我要每一行的变量.我要那个变量.

比如.第一行的内容.可以有一个变量.每二行的内容有一个变量
发表于 2017-3-19 23:11:40 | 显示全部楼层
回复 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
 楼主| 发表于 2017-3-19 23:22:18 | 显示全部楼层
@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% 这个变量
 楼主| 发表于 2017-3-26 02:23:08 | 显示全部楼层
回复 4# terse



很想再请问.如何产生一个 大于3而小于60的随机数.

当这个随机=10时 

重复执行 执行10次  
    echo;!str!

这个!str! 值.每次都是不一样的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 22:17 , Processed in 0.019407 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表