Скрипт для случайного выбора строки из файла
Приветствую, нужен скрипт который из заданного 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-файла
как быть?
|
Код:
@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
)
.
|
во блин, спасибо, от души :)
а можно еще сюда впихнуть рандомное количество пингов
т.е.
Цитата:
set min=5
set max=10
set /a raz=min+(max-min+1)*%random%/32768
ping "%%i" -n %raz%
|
всё время одно и тоже число %raz% выдает
|
Цитата:
Цитата mapisic
всё время одно и тоже число %raz% выдает »
|
«setlocal enableextensions enabledelayedexpansion» в начале пакетного файла и «!raz!» вместо «%raz%».
|
Код:
@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
)
|
Georgio, а без exit можно сделать? чтобы повторялось (и рандомное raz и строка в файле) в пределах одного bat-файла? одно и тоже число raz всегда :(
|
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:#
)
)
.
|
Цитата:
Цитата Georgio
for /l %%j in (1 1 100) do ( »
|
в вот эта строчка что значит???
|
mapisic, эта строчка для увеличения выборки. Назначаются по сто разных переменных со значениями "5", "6", "7", "8", "9", "10". Выборка увеличивается с 6 элементов до 600!
|
Время: 21:26.
© OSzone.net 2001-