Board logo

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

作者: 442644720    时间: 2016-12-25 09:17     标题: 批处理如何实现提取多个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
作者: Nsqs    时间: 2016-12-26 00:24

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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2