<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; CMD/BAT: Получение рандомного пароля]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=7306</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7306&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: Получение рандомного пароля».]]></description>
		<lastBuildDate>Tue, 26 Jun 2012 15:17:59 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[CMD/BAT: Получение рандомного пароля]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61232#p61232</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Александр_foxware)]]></author>
			<pubDate>Tue, 26 Jun 2012 15:17:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61232#p61232</guid>
		</item>
	</channel>
</rss>
