<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: Получение рандомного пароля]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7306&amp;type=atom" />
	<updated>2012-06-26T15:17:59Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7306</id>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: Получение рандомного пароля]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61232#p61232" />
			<content type="html"><![CDATA[<p>Иногда возникает необходимость сгенерировать рандомное название, пароль и т.д. Выкладываю на ваше усмотрение следующий скрипт</p><div class="codebox"><pre><code>@ECHO OFF
COLOR 0A

:: получаем длину пароля в цифрах
set length_pass=25

:: тип используемых символов в пароле
::  использование группы - yes/no
set use_symbol_en_small=yes
set use_symbol_en_big=yes
set use_symbol_ru_small=no
set use_symbol_ru_big=no
set use_symbol_numbers=yes
set use_symbol_special=no

:: -----------------== начало скрипта ==-----------------------

:: обнуляем переменные
set number_symbol_in_use=0

:: задаём наборы символов групп
set group_en_small=a d c d e f g h i j k l m n o p q r s t u v w x y z
set group_en_big=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
set group_ru_small=а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я
set group_ru_big=А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
set group_numbers=0 1 2 3 4 5 6 7 8 9
set group_special=~ ` @ # $ № : { } / \ + - _ . &#039;

:: узнаём кол-во символов которые будут использоваться и составляем строку выбора
if %use_symbol_en_small%==yes (
	set /a number_symbol_in_use=%number_symbol_in_use%+26
	set symbol_in_use=%group_en_small%
)
if %use_symbol_en_big%==yes (
	set /a number_symbol_in_use=%number_symbol_in_use%+26
	set symbol_in_use=%symbol_in_use% %group_en_big%
)
if %use_symbol_ru_small%==yes (
	set /a number_symbol_in_use=%number_symbol_in_use%+33
	set symbol_in_use=%symbol_in_use% %group_ru_small%
)
if %use_symbol_ru_big%==yes (
	set /a number_symbol_in_use=%number_symbol_in_use%+33
	set symbol_in_use=%symbol_in_use% %group_ru_big%
)
if %use_symbol_numbers%==yes (
	set /a number_symbol_in_use=%number_symbol_in_use%+10
	set symbol_in_use=%symbol_in_use% %group_numbers%
)
if %use_symbol_special%==yes (
	set /a number_symbol_in_use=%number_symbol_in_use%+16
	set symbol_in_use=%symbol_in_use% %group_special%
)

:: вычисляем интервал принадлежащий одному символу
set /a symbol_step_random=32767/%number_symbol_in_use%

:: запускаем цикл с шагом 1 и длиной в кол-во символов в пароле с передачей рандомного числа
for /l %%a in (1,1,%length_pass%) do call :randominaze

echo Random password  -  %passkey%

pause&gt;nul

exit /b 0

:randominaze

set randomnumber=%RANDOM%
set cycle_number=0
set previous_number_letter=0
for %%b in (%symbol_in_use%) do call :division %%b
exit /b 0

:division
set letter=%1
set /a cycle_number=%cycle_number%+1
set /a number_letter=%symbol_step_random%*%cycle_number%
if /i %randomnumber% LEQ %number_letter% (
	if /i %randomnumber% GTR %previous_number_letter% (
		set passkey=%passkey%%letter%
	)
)
set previous_number_letter=%number_letter%
exit /b 0</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Александр_foxware]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26976</uri>
			</author>
			<updated>2012-06-26T15:17:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61232#p61232</id>
		</entry>
</feed>
