; This source is UGLY... you've been warned! :) ; version 1.1 FileSelectFile,file,1,,Select a text file Loop,9999 { Tooltip,Reading line %A_Index%... FileReadLine,Line%A_Index%,%file%,%A_Index% If Errorlevel = 1 Break Count += 1 } ToolTip Loop,9999 { FileReadLine,Line_temp%A_Index%,%file%_temp,%A_Index% If Errorlevel = 1 Break Count_temp += 1 } FileRead,file_temp,%file%_temp Available := Count - Count_temp IfNotExist,%file%_temp Available = %Count% If Available < 1 { Msgbox, Sorry, all lines already used. Erase temp file. ExitApp } Querybox: inputbox,query,Query,Enter number of lines (%count% lines`, %available% available),,350,115 if query < 1 ExitApp if query > %available% { Msgbox, Huh? Only %available% available! Goto,Querybox } uberschleife: step += 1 togo := query-1 Tooltip,Processing #%step% (%togo% to go)... FileRead,file_temp,%file%_temp FileDelete,%temp%\ahk_temp.dat addedlines = 0 counter = 0 Loop,9999 { schleife: counter += 1 if file_temp contains "%counter%" goto,schleife fileappend,%counter%`n,%temp%\ahk_temp.dat addedlines += 1 if addedlines = %available% Break } random,zufall,1,%addedlines% FileReadLine,ChoosenLine,%temp%\ahk_temp.dat,%zufall% Zeile := Line%ChoosenLine% FileAppend,%Zeile%`n,%file%_output.txt FileAppend,"%ChoosenLine%"`n,%file%_temp query -= 1 available -= 1 if query > 0 goto,uberschleife ToolTip Msgbox,Finished! Result written/appended to %file%_output.txt FileDelete,%temp%\ahk_temp.dat