Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Генератор номеров телефонов или случайных чисел

Пользователь


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

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


Изменения
Автор: DJIOAN
Дата: 09-06-2016
Описание: В коде где : и out воспринял как смайлик
На работе зашла речь о программе по подбору пароля на wi-fi и сошлись во мнении что многие ставят номера телефонов. Вот я и решил состряпать батник для генерации случайных номеров и записывался в файл.
Скрытый текст
Код: Выделить весь код
@echo off
:loop
setlocal enabledelayedexpansion
set string=0123456789
set col=100000
set /p cod="Введите код типа +7978 и две первые цифры номера 70, 71 ...:"
::^Тут количество букв
for /l %%A IN (1,1,%col%) DO (
 set num=!random! %% 3
 call :out !num!
)
Echo. Успешно! Продолжаем? ....
goto loop
:out
echo.%cod%%1!>>key.txt


Он работает неплохо генерирует 100 000 вариантов но есть несколько недостатков которые я не могу исправит:
  • не всегда полный номер в к примеру +7978 11 11 111, а не хватает в основном одного символа
  • не смог сделать чтоб генерации не повторялись в текстовом документе
  • не смог задать диапазон к примеру код остается +7978 а 7 остальных цифр генерировались от 7000000-9000000

Если есть какие-то предложения то помогите пожалуйста. Я не программист но стараюсь и мне это нравится.

Отправлено: 10:30, 03-06-2016

 

Ветеран


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

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


Цитата DJIOAN:
а 7 остальных цифр генерировались от 7000000-9000000 »
Два миллиона записей, это на несколько часов, можете попробовать если есть время, исправьте диапазон на нужный:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion

for /l %%i in (7000,1,9000) do (

	set "a_!random!!random!!random!!random!!random!!random!!random!=%%i"

)

1>numbers.txt (for /f "tokens=2 delims==" %%i in ('set a_') do echo +7978 %%i)

Отправлено: 23:48, 03-06-2016 | #2



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

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


Ветеран


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

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


Цитата DJIOAN:
В коде где : и out воспринял как смайлик »
Вы ж не первый день замужем на конференции и должны помнить, что код следует обрамлять тэгом «code» (и только потом, по желанию, тэгом «spoiler»).


Вообще такие вещи лучше делать, имея нормальный генератор псевдослучайных чисел и нормальную арифметику — WSH/PoSH.

Отправлено: 22:29, 04-06-2016 | #3


Пользователь


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

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


Цитата Foreigner:
Два миллиона записей, это на несколько часов, можете попробовать если есть время, исправьте диапазон на нужный: »
Спасибо за вариант, я его проверил изменил значения но он дал после +7978 всего 4-5 цифр из 7 посмотрю еще может смогу доработать

Отправлено: 11:18, 06-06-2016 | #4


Ветеран


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

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


DJIOAN, 4-5 он не мог дать. Только с 7000 до 9000. Но как правильно заметил Iska, лучше использовать PowerShell:

Код: Выделить весь код
get-random (7000000..9000000) -count 2000000 | foreach { '+7978 ' + $_ } | sc numbers.txt
В результате конечный файл размером 28.5 Мб создался за 2-3 минуты (может и меньше, отходил). Количество строк 2 млн.

ЗЫ. Батник может вообще не осилить такой объем. Потеряете несколько часов.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:41, 06-06-2016 | #5


Ветеран


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

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


Foreigner, «get-random» гарантированно даёт уникальные числа на выходе?

Отправлено: 14:22, 06-06-2016 | #6


Ветеран


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

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


Iska, Не знаю, и как это проверить? В данном случае "перемешивает" числа из диапазона с 7000000 до 9000000.

Отправлено: 15:05, 06-06-2016 | #7


Ветеран


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

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


Foreigner, порылся малость. В данном случае — использование коллекции — как я понимаю, повторов не будет, он её тупо перемешивает и извлекает. А для -min и -max свойства -count нет.

Отправлено: 11:47, 08-06-2016 | #8


Пользователь


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

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


разобрался с комбинацией CMD в PowerShell отработал на ура буквально за 5 мин может чуть меньше.
Скрытый текст
Код: Выделить весь код
@echo on
SetLocal EnableExtensions

for /f "delims=" %%i in ('
powershell "(get-random (7000000..9000000) -count 2000000 | foreach { '+7978' + $_ } | sc numbers.txt)"
') do set count=%%i
pause


Есть еще вопрос я просто не знаю как это осуществить. Как сделать генератор дат дней рождений. К примеру чтоб он спрашивал год а день и месяц генерировал и все это записывало в txt. Ну очень нужно я столько вариантов нашел переделывал но в этом случае вообще не получается. Много мыслей, переменных но не знаю как все скомпоновать. Если есть возможность подкиньте идею с чего посмотреть или начать. Спасибо.

Отправлено: 14:11, 09-06-2016 | #9


Ветеран


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

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


Код: Выделить весь код
@echo off
set/p y="Введите год: "
set min=1& set max=12& set/a m=%random%%%(max-min+1)+min
set min=1& set max=31& set/a d=%random%%%(max-min+1)+min
echo %d%-%m%-%y%
pause>nul
Предугадывая следующий вопрос:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
set/p y="Введите год: "
set min_m=1& set max_m=12
set min_d=1& set max_d=31
for /l %%a in (1,1,10) do (
 set/a "m=!random!%%(max_m-min_m+1)+min"
 set/a "d=!random!%%(max_d-min_d+1)+min"
 echo !d!-!m!-!y!>>"name.txt"
)
pause>nul

Последний раз редактировалось alpap, 09-06-2016 в 15:11.

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

Отправлено: 14:56, 09-06-2016 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Генератор псевдослучайных чисел Bordermax Хочу все знать 1 21-06-2011 09:53
CMD/BAT - [решено] Поиск строки в файле и замена её на набор из случайных чисел и букв Sub-Zero Скриптовые языки администрирования Windows 6 08-02-2011 18:54
C/C++ - Как правильно задать диапазон генерации случайных чисел perfomanse Программирование и базы данных 6 03-07-2010 22:10
Привязка номеров телефонов к CDMA-телефонам ZTE, Huawei, Hisence __sa__nya Мобильные ОС, смартфоны и планшеты 0 22-03-2010 11:19
Генератор случайных чисел Murrey Хочу все знать 3 22-08-2006 13:00




 
Переход