2014-11-12 3 views
0

У меня есть список из 25 сайтов в текстовом файле, каждый из которых по отдельной строке, я хотел бы открыть их в произвольном порядке через пакетный файл.Выбрать случайную строку из текстового файла и excute

websites.txt

... 
google.com 
facebook.com 
... 

Я знаю, что нужно использовать цикл, но я не уверен, как вытащить адрес веб-сайта от случайной строки. Я думал об использовании ...

for /f "tokens=%rannum%" 

но все веб-сайты должны быть на той же линии, и от моего тестирования, которые не работают хорошо. Также должен быть способ убедиться, что один и тот же сайт не открывается дважды.

То, что я до сих пор ...

@echo off 
set file=openweb.txt 
set /a total_lines=1 
for /f %%a in ('Type %_File%^|Find "" /v /c') Do Set /a total_lines=%%a 
set /a start_count=0 
set "found=found.txt" 
if exist "%found%" del "%found%" 
copy NUL found.txt 
if %start_count% NEQ %total_lines% (
:run_again 
REM Randomly select a number between 1-26 
set /a random_number=%random% %% 26-1 
REM Validation Random number was not used already 
findstr /m "%random_number%" %found% 
if %errorlevel%==0 (
echo already found 
goto:run_again 
) 
REM Open each website. Wait 2sec between each. 
for /f %%a in (websites.txt) do (
start iexplore %%a 
@ping 127.0.0.1 -n 2 -w 1000 > nul 
) 
REM write out Random Number to the .txt 
@echo %random_number%>>%found% 
set /a start_count+=1 
) 

Любой вход на том, как сделать этот код лучше приветствуется. Спасибо

+0

Я думаю, что это будет работать ... от: http://stackoverflow.com/questions/13343144/random-line-of-text-ussing-batch – user4241682

ответ

0

Попробуйте это:

@echo off 
set file=openweb.txt 
set /a lines=25 

set /a skip=%random%%%lines%-1 
more %file% +%skip% > temp.tmp 
set /p target=< temp.tmp 
del temp.tmp 

Echo %target% 
Смежные вопросы