
【已解決】求助隨機抽取文本的批處理輸出ECHO處于關閉狀態需要用批處理程序處理一些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.txt2.txt3.txt4.txt5.txt6.txt7.txt8.txtmerge_texts.batoutput.txt代碼如下:
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 處于關閉狀態。nclick="copycode($('code0'));">復制代碼
- @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

