[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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
1

评分人数

本帖最后由 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
复制代码
表示你的思路无法理解,其实用数组很简单

TOP

返回列表