Войти

Показать полную графическую версию : Скрипт для случайного выбора строки из файла


mapisic
03-09-2014, 09:03
Приветствую, нужен скрипт который из заданного txt-файла выберет рандомную строку и запустит необходимую команду.
Например, есть txt-файл вида:
yandex.ru
mail.ru
1.1.1.1
2.2.2.2
...и т.д.
нужно рандомно выбрать любую строчку и запустить например
ping %рандомная_строка_из_файла%

попробовал из темы http://forum.oszone.net/thread-165488.html скрипт
@Echo Off

For /F "Tokens=1,2 Delims=[]" %%i In ('Find /V /N "" "file.txt"') Do Set $_%%i=%%j
For /F "Tokens=*" %%i In ('^<"file.txt" Find /V /C ""') Do Set NUM=%%i

:LOOP
Set /A RND=1+%RANDOM%/(32768/%NUM%)
If %RND% GTR %NUM% Set /A RND-=1

Call Echo %%$_%RND%%%
PAUSE >Nul
GoTo :LOOP
но он подставляет вместо yandex,mail,google номер строки из txt-файла
как быть?

Georgio
03-09-2014, 10:01
@echo off

for /f "usebackq delims=" %%i in ("example.txt") do (
call set $%%random%%=%%i
)
for /f "tokens=2 delims==" %%i in ('set $') do (
ping "%%i"
exit /b
)


или


@echo off

for /f "usebackq delims=" %%i in ("example.txt") do (
call set $%%random%%=%%i
)
for /f "delims==" %%i in ('set $') do (
call ping "%%%%i%%"
exit /b
)


.

mapisic
03-09-2014, 16:23
во блин, спасибо, от души :)
а можно еще сюда впихнуть рандомное количество пингов
т.е.
set min=5
set max=10
set /a raz=min+(max-min+1)*%random%/32768
ping "%%i" -n %raz%
всё время одно и тоже число %raz% выдает

Iska
03-09-2014, 16:48
всё время одно и тоже число %raz% выдает »
«setlocal enableextensions enabledelayedexpansion» в начале пакетного файла и «!raz!» вместо «%raz%».

Georgio
03-09-2014, 17:43
@echo off

for /l %%i in (1 1 100) do (
for /l %%j in (5 1 10) do (
call set #%%random%%=%%j
)
)
for /f "delims==" %%i in ('set #') do (
call set raz=%%%%i%%
goto:#
)
:#
for /f "usebackq delims=" %%i in ("example.txt") do (
call set $%%random%%=%%i
)
for /f "delims==" %%i in ('set $') do (
call ping "%%%%i%%" -n %raz%
exit /b
)

mapisic
04-09-2014, 11:31
Georgio, а без exit можно сделать? чтобы повторялось (и рандомное raz и строка в файле) в пределах одного bat-файла? одно и тоже число raz всегда :(

Georgio
04-09-2014, 12:26
mapisic, даже без переменной "raz":


@echo off

:#
setlocal
for /f "usebackq delims=" %%i in ("example.txt") do (
call set $%%random%%=%%i
)
for /f "delims==" %%i in ('set $') do (
for /l %%j in (1 1 100) do (
for /l %%k in (5 1 10) do (
call set #%%random%%=%%k
)
)
for /f "delims==" %%j in ('set #') do (
call ping "%%%%i%%" -n %%%%j%%
endlocal
goto:#
)
)


.

mapisic
04-09-2014, 13:02
for /l %%j in (1 1 100) do ( »
в вот эта строчка что значит???

Georgio
04-09-2014, 13:16
mapisic, эта строчка для увеличения выборки. Назначаются по сто разных переменных со значениями "5", "6", "7", "8", "9", "10". Выборка увеличивается с 6 элементов до 600!




© OSzone.net 2001-2012