需要用批处理程序处理一些txt文本。bat所在目录下有个文本:1.txt、2.txt、3.txt、4.txt、5.txt、6.txt、7.txt、8.txt,每个txt里有很多行文字。bat批处理循环运行100次,每次从1.txt、3.txt、5.txt中的任意2个txt文本中各随机抽取一行文字,从2.txt、4.txt、6.txt、7.txt、8.txt中的任意3个txt文本中各随机抽取一行文字,最后把将所有随机选取到的文字合并成一行输出到output.txt文本中,没循环一次合并的结果都会单独占据一行。因为是循环100次,所以运行结果就是合并100次,那么output.txt里最终得到的是100行合并后的文字。
运行代码后,output.txt里不是合并后的文字,而是100行ECHO 处于关闭状态。求解!
文件夹里的文件如下:
1.txt
2.txt
3.txt
4.txt
5.txt
6.txt
7.txt
8.txt
merge_texts.bat
output.txt
代码如下:- @echo off
- setlocal enabledelayedexpansion
-
- set "files1=1.txt;3.txt;5.txt"
- set "files2=2.txt;4.txt;6.txt;7.txt;8.txt"
- set "output=output.txt"
-
- REM 清空输出文件
- break > "%output%"
-
- for /l %%i in (1, 1, 100) do (
- set "result="
-
- REM 随机选取2个txt,每个txt随机选取一行
- for %%j in (%files1%) do (
- set "file=%%j"
- call :ReadRandomLine "!file!" line
- set "result=!result! !line!"
- )
-
- REM 随机选取3个txt,每个txt随机选取一行
- for %%j in (%files2%) do (
- set "file=%%j"
- call :ReadRandomLine "!file!" line
- if !errorlevel! equ 0 (
- set "result=!result! !line!"
- )
- )
-
- REM 输出到文件
- echo !result:~1! >> "%output%"
- )
-
- echo "合并完成。"
- pause
- goto :eof
-
- :ReadRandomLine
- setlocal
- set "file=%~1"
- set "line="
- for /f "usebackq skip=%random% tokens=*" %%k in ("%file%") do (
- endlocal & set "line=%%k" & exit /b 0
- )
- exit /b 1
复制代码 output.txt内容如下:
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。 |