@echo off&setlocal
for /f %%a in ('find /c /v "" ^<a2.txt') do set a=%%a
for /f %%a in ('find /c /v "" ^<a3.txt') do set b=%%a
for /f %%a in ('find /c /v "" ^<a4.txt') do set c=%%a
for /f "delims=" %%x in (a1.txt) do call :shit %%x
goto :eof
:shit
set /a x=%random%%%a+1
for /f "tokens=1* delims=:" %%a in ('findstr /n . a2.txt^|findstr "^%x%:.*$') do set "h=%%b"
set /a x=%random%%%b+1
for /f "tokens=1* delims=:" %%a in ('findstr /n . a3.txt^|findstr "^%x%:.*$') do set "i=%%b"
set /a x=%random%%%c+1
for /f "tokens=1* delims=:" %%a in ('findstr /n . a4.txt^|findstr "^%x%:.*$') do set "j=%%b"
echo %1 %h% %i% %j%
goto :eof
Originally posted by 9527 at 2006-11-2 04:51:
@echo off&setlocal
for /f %%a in ('find /c /v "" ^<a2.txt') do set a=%%a
for /f %%a in ('find /c /v "" ^<a3.txt') do set b=%%a
for /f %%a in ('find /c /v "&quo ...
@echo off
:: 假设A2.TXT、A3.TXT、A4.TXT的行数分别为2、3、4
setlocal enabledelayedexpansion
for /f "delims=" %%i in (A1.TXT) do (
set var1=%%i
call :pick-up2
echo !var1! !var2! !var3! !var4!
)
pause
goto :eof
:pick-up2
set /a num2=2-(1%random:~-1%%random:~0,1%-100)
if %num2% leq 0 goto pick-up2
for /f "tokens=1* delims=:" %%i in ('findstr /n . A2.TXT') do if %%i equ %num2% set var2=%%j
:pick-up3
set /a num3=3-(1%random:~-1%%random:~0,1%-100)
if %num3% leq 0 goto pick-up3
for /f "tokens=1* delims=:" %%i in ('findstr /n . A3.TXT') do if %%i equ %num3% set var3=%%j
:pick-up4
set /a num4=4-(1%random:~-1%%random:~0,1%-100)
if %num4% leq 0 goto pick-up4
for /f "tokens=1* delims=:" %%i in ('findstr /n . A4.TXT') do if %%i equ %num4% set var4=%%j
goto :eof
[ Last edited by namejm on 2006-11-3 at 01:31 AM ]
@echo off & set /a a=1
set files=test1.txt test2.txt test3.txt test4.txt
setlocal enabledelayedexpansion
for %%i in (%files%) do call :Config %%i
set /a a=0
for %%i in (%files%) do set /a a+=1 & call :Pick_up %%i
for %%i in (%var1% %var2% %var3% %var4%) do echo %%i
pause>nul & goto :eof
::获取文本的行数
:Config
for /f %%a in ('find /c /v "" ^<%1') do (set /a num%a%=%%a & set /a a+=1 & goto :eof)
::利用more达到跳过指定行的目的(而且可以跳过0行,而使用skip则不行!)
:Pick_up
set /a skipline=%random% %% !num%a%!
set /a sk=%skipline%+1
for /f "delims=" %%i in ('more +%skipline% %1') do (
set var%a%=%1@第%sk%行@:%%i & goto :eof)