标题: [文本处理] 批处理如何实现提取多个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 编辑
- @echo off&setlocal enabledelayedexpansion
- for %%1 in (*.txt)do (set /a b+=1
- for /f "delims=" %%2 in (%%1)do (
- call set /a #c_%%b%%+=1
- call set #a_%%b%%_%%#c_!b!%%=%%2
- )
- for /l %%3 in (1 1 2)do (
- call set /a d%%3=%%random%% %%%% %%#c_!b!%%+1
- )
- )
- (for /l %%1 in (1 1 %b%)do (
- for /l %%2 in (1 1 2)do (
- call echo %%#a_%%1_!d%%2!%%
- )
- ))>new.txt
- sort<new.txt>@&move "@" "new.txt">nul
复制代码
表示你的思路无法理解,其实用数组很简单
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |