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

[文本处理] 批处理如何实现提取多个txt文本文件的随机两行内容并输出到同一个文本里

[复制链接]
发表于 2016-12-25 09:17:03 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-12-26 00:31 编辑

每个TXT随机抽2行、组成新的TXT。求助
下面是我自己写的。随机抽2行出来 就出错。

求修正或新编写一个可以实现我目的的代码

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

setlocal enabledelayedexpansion
rem 读取所有文本
for %%k in (%cd%\所有记录\*.*) do (
  rem 每个文本、每一行赋予随机数字。输出为1.txt
  for /f "delims=" %%i in (%%k) do call echo %%random:~-1%%%%random:~-1%% #%%i>>1.txt
   rem 读取1.txt。根据数字排序输出为2.txt
   for /f "tokens=2 delims=#" %%l in ('type "1.txt" ^|sort') do echo %%l>>2.txt
    rem 读取2.txt随机N行输出到xxx.txt
          set m=0
         for /f "delims=" %%r in (2.txt) do (
          set /a m+=1
          if "!m!"=="1" set a=%%r
          if "!m!"=="2" set b=%%r
                     echo !a!>>xxx.txt
              echo !b!>>xxx.txt
         )

)


ping -n 10000 127.1>nul

评分

参与人数 1PB -2 收起 理由
pcl_test -2 未按版规发帖

查看全部评分

发表于 2016-12-26 00:24:29 | 显示全部楼层
本帖最后由 Nsqs 于 2016-12-26 01:08 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%1 in (*.txt)do (set /a b+=1
  3.         for /f "delims=" %%2 in (%%1)do (
  4.                 call set /a #c_%%b%%+=1
  5.                 call set #a_%%b%%_%%#c_!b!%%=%%2
  6.         )
  7.         for /l %%3 in (1 1 2)do (
  8.                 call set /a d%%3=%%random%% %%%% %%#c_!b!%%+1
  9.         )
  10. )
  11. (for /l %%1 in (1 1 %b%)do (
  12.         for /l %%2 in (1 1 2)do (
  13.                 call echo %%#a_%%1_!d%%2!%%
  14.         )
  15. ))>new.txt
  16. sort<new.txt>@&move "@" "new.txt">nul
复制代码
表示你的思路无法理解,其实用数组很简单
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 10:17 , Processed in 0.019266 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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