Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Скрипт для случайного выбора строки из файла

Ответить
Настройки темы
CMD/BAT - Скрипт для случайного выбора строки из файла

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Приветствую, нужен скрипт который из заданного 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-файла
как быть?

Отправлено: 09:03, 03-09-2014

 

Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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
 )

.

Последний раз редактировалось Georgio, 03-09-2014 в 10:24.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:01, 03-09-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось mapisic, 03-09-2014 в 16:32.


Отправлено: 16:23, 03-09-2014 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата mapisic:
всё время одно и тоже число %raz% выдает »
«setlocal enableextensions enabledelayedexpansion» в начале пакетного файла и «!raz!» вместо «%raz%».
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:48, 03-09-2014 | #4


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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
 )
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:43, 03-09-2014 | #5


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 11:31, 04-09-2014 | #6


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


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:#
  )
 )

.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:26, 04-09-2014 | #7


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Georgio:
for /l %%j in (1 1 100) do ( »
в вот эта строчка что значит???

Отправлено: 13:02, 04-09-2014 | #8


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


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

Отправлено: 13:16, 04-09-2014 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Скрипт для случайного выбора строки из файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Winnity — диалог выбора папки или файла из командой строки hb860 Скриптовые языки администрирования Windows 27 08-11-2012 04:19
PowerShell - [решено] цикл для каждой строки из файла rudimko Скриптовые языки администрирования Windows 15 25-10-2012 09:46
CMD/BAT - Скрипт, для чтения нужных строк из txt файла в переменную mr.R Скриптовые языки администрирования Windows 1 26-07-2012 12:59
C/C++ - [решено] Случайная выборка строки из файла для Web игры Чайниг Программирование и базы данных 10 19-03-2012 21:39
CMD/BAT - [решено] Скрипт для случайного выбора строки из файла Anonymоus Скриптовые языки администрирования Windows 8 14-06-2010 04:03




 
Переход