Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 08.02.2015
Сообщений: 10

Bat - случайная запись в реестре

11.01.2019, 12:36. Показов 2753. Ответов 26

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подскажите, пожалуйста, кто знает.
Вот, к примеру, мне нужно добавить в реестр следующее:

Code
1
2
[HKEY_LOCAL_MACHINE\SOFTWARE\Prog gor\gor]
"ogo"="1q2w3e4r5t6y7u8i9o0p1q2w3e4r5t6y"
Помогите, пожалуйста. Нужен батник, чтобы при его применении записывалось значение не "1q2w3e4r5t6y7u8i9o0p1q2w3e4r5t6y" , а любое случайное с цифр и букв в любом порядке, одинаковое количество цифр и букв значения не имеют.
Возможно ли, вообще сделать такой батник?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.01.2019, 12:36
Ответы с готовыми решениями:

BAT-файл или запись в реестре для перехода компьютера в режим сна через 3600 секунд
нужно создать BAT файл или запись в реестре (что намного желательней) чтобы компьютер переходил в режим сна через 3600 секунд, как? буду...

Запись команд из одного bat-файла в другой bat-файл
Предположил что: в 1 bat: echo echo my_text >> my_file >> new.bat и хотел что бы получилось так в new.bat : echo my_text >>...

Как изменить 16-ное REG_BINARY значение в реестре через bat-файл?
Приветствую. Есть такой .reg файл, который меняет ...

26
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
11.01.2019, 13:32
Цитата Сообщение от Fhnbcn Посмотреть сообщение
Возможно ли, вообще сделать такой батник?
Ну, а чего же невозможно? Можно...

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@echo off
rem Псевдорандом - вывод n-разрядного числа в m знаков
rem Нет ограничений рандома cmd в 32768
rem примеры запуска:
rem run.bat "10" "10"
rem run.bat 10 0xF
rem run.bat
rem Параметр 1 - количество символов в выводе 
rem Параметр 2 - разрядность
 
set x=
set y=
set m=
set n=
set num=
echo.%~1|>nul findstr /rc:"[^0-9]"&&(
    echo Параметр 1 может быть только десятичным числом либо его не должно быть
    pause&exit /b
)
echo.%~2|>nul findstr /rc:"[^0-9A-Fa-fx]"&&(
    echo Параметр 2 может быть десятичным, либо шестнадцатеричным или ^
восьмеричным числом, либо его не должно быть
    pause&exit /b
)
 
if "%~1" equ "" (set /a x=16) else (set /a x=%~1)
if "%~2" equ "" (set /a y=16) else (set /a y=%~2)
if %y% gtr 16 echo Параметр 2 ^(разрядность^) не может превышать ^
число символов, записанных в переменной chr&pause&exit /b
 
set "m=%x%" &: количество цифр в выводе
set "n=%y%" &: разрядность
set chr=0 1 2 3 4 5 6 7 8 9 A B C D E F &: символы используемые в выводе
 
:loop
set /a k=1+n*%random%/32768
for /f "tokens=%k%" %%i in ("%chr%") do (set num=%%i%num%)
set /a m-=1
if %m% gtr 0 goto loop
echo %num%
pause
- запись в реестр добавьте самостоятельно...

Символы, используемые в выводе, тоже можно подправить под задачу...
1
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
11.01.2019, 13:35
Цитата Сообщение от Fhnbcn Посмотреть сообщение
не "1q2w3e4r5t6y7u8i9o0p1q2w3e4r5t6y" , а любое случайное с цифр и букв в любом порядке

следующий батник формирует последовательность случайных цифр или букв:


Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
@echo off
setlocal enabledelayedexpansion
cls
 
@echo.
@echo.
 
rem 1q2w3e4r5t6y7u8i9o0p1q2w3e4r5t6y
call :randomizeSequence 32 sequence
@echo sequence = '%sequence%'
exit /b
 
rem =========================================================================
rem =========================================================================
 
:randomize
    set MIN=%1
    set MAX=%2
    set /A %3=%MIN% + (%MAX% - %MIN% + 1) * %random% / 32768
exit /b
 
:fillArray
    set "array[!cnt!]=%~1"
    set /a cnt +=1
exit /b
 
:initialRandomize
    if defined ALREADYINIT (exit /b)
    set ALREADYINIT=true
    rem         00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 
    for %%a in ( 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  0  1  2  3  4  5  6  7  8  9) do (
        call :fillArray %%a  
    )
exit /b
 
:accumulate
    call :randomize 0 35 index
    call set char=%%array[%index%]%%
    call set "%dst%=%%%dst%%%%char%"    
exit /b
 
:randomizeSequence
    set len=%1
    set dst=%2
    call :initialRandomize
    for /L %%a in (1 1 %len%) do (
        call :accumulate %%a
    )
exit /b
 
rem =========================================================================
rem =========================================================================
Есть проблема: работает медленно.
1
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
11.01.2019, 14:04
Цитата Сообщение от Fhnbcn Посмотреть сообщение
Нужен батник, чтобы при его применении записывалось значение не "1q2w3e4r5t6y7u8i9o0p1q2w3e4r5t6y" , а любое случайное с цифр и букв в любом порядке, одинаковое количество цифр и букв значения не имеют.
Возможно ли, вообще сделать такой батник?
Примеры на cmd вам уже показали, а вот PowerShell вариант:

PowerShell
1
New-ItemProperty -Path 'registry::HKEY_LOCAL_MACHINE\SOFTWARE\Prog gor\gor' -Name 'ogo' -Value (-join ((65..90)+(97..122)+(48..57) | Get-Random -Count 32 | % {[char]$_})) -Force
1
0 / 0 / 0
Регистрация: 08.02.2015
Сообщений: 10
11.01.2019, 15:07  [ТС]
Огромное спасибо, что так быстро и много ответили.
Я так понял, что это все какие то генераторы.
Ума не приложу как их прикрутить, к примеру к этому конкретному батнику:
Windows Batch file
1
2
3
4
5
@echo off
 
REG ADD HKLM\Software\Prog /v Gorp /t REG_SZ /d 00000000000000000000000000000000 /f
 
exit /b
чтобы вместо тридцати двух нулей в реестре прописывались цифры и буквы в любой, каждый раз разной последовательности.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
11.01.2019, 15:14
Цитата Сообщение от Fhnbcn Посмотреть сообщение
Я так понял, что это все какие то генераторы.
Пример на PowerShell генерирует 32-х символьную, случайную последовательность латинских букв (в разном регистре) и цифр, а также записывает это в реестр.

Можете сами проверить - запускаете powershell.exe (от Администратора) и вставляете строчку из ответа #4
0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
11.01.2019, 16:05
Лучший ответ Сообщение было отмечено Fhnbcn как решение

Решение

Цитата Сообщение от Fhnbcn Посмотреть сообщение
Ума не приложу как их прикрутить, к примеру к этому конкретному батнику:
Сделает где-то примерно за 1-1.5 секунды:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
@echo off
cls
 
@echo.
@echo.
 
call :randomizeSequence 32 sequence
@echo sequence = '%sequence%'
 
REG ADD HKLM\Software\Prog /v Gorp /t REG_SZ /d %sequence% /f
 
exit /b
 
rem =========================================================================
rem =========================================================================
 
:randomize
    set MIN=%1
    set MAX=%2
    set /A %3=%MIN% + (%MAX% - %MIN% + 1) * %random% / 32768
exit /b
 
:fillArray
    set "array[%cnt%]=%1"
    set /a cnt +=1
exit /b
 
:initialRandomize
    if defined ALREADYINIT (exit /b)
    set ALREADYINIT=true
    rem         00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 
    for %%a in ( 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  0  1  2  3  4  5  6  7  8  9) do (
        call :fillArray %%a  
    )
exit /b
 
:accumulate
    call :randomize 0 35 index
    call set "char=%%array[%index%]%%"
    call set "%dst%=%%%dst%%%%char%"    
exit /b
 
:randomizeSequence
    set len=%1
    set dst=%2
    call :initialRandomize
    for /L %%a in (1 1 %len%) do (
        call :accumulate %%a
    )
exit /b
 
rem =========================================================================
rem =========================================================================
1
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
11.01.2019, 16:39
Цитата Сообщение от KDE777
...(-join ((65..90)+(97..122)+(48..57) | Get-Random -Count 32...
Проще (без выделения памяти под массивы с последующей передачей данных по конвейеру):
PowerShell
1
([Guid]::NewGuid()).Guid.Replace('-', '')
YuS_2, eva2326 генератор можно сделать значительно проще и наглядней:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
0</* :
@echo off
  setlocal
    for /f %%i in ('cscript /nologo /e:jscript "%~f0"') do (
      set "rnd=%%i" % rem :захватили случайное значение
    )
    rem можно просто отобразить это значение
    echo:%rnd%
  endlocal
exit /b*/
 
(function() {
  WScript.echo((
      new ActiveXObject('Scriptlet.TypeLib')
    ).Guid.toLowerCase().replace(/[-\{\}]/g, '')
  );
})();
В сущности здесь также генерируется GUID, из которого после затираются лишние знаки ('-' и фигурные скобки).
Есть и прочие варианты.
2
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,871
11.01.2019, 16:50
Windows Batch file
1
2
3
4
@    PERL6 -e ('а'...'z',0...9).roll(32).join.say >seq
@    SET /P seq=<seq
@    REG ADD HKLM\Software\Prog /v Gorp /t REG_SZ /d %seq% /f
@    DEL seq
1
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
11.01.2019, 16:58
Цитата Сообщение от greg zakharov Посмотреть сообщение
([Guid]::NewGuid()).Guid
Тоже вариант, но если устраивает, что будет фиксированная длинна и только строчные a-f буквы + цифры...
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
11.01.2019, 17:48
Цитата Сообщение от greg zakharov Посмотреть сообщение
генератор можно сделать значительно проще и наглядней
с привлечением не "чисто" cmd средств, конечно, можно и проще, и нагляднее, с этим спорить бессмысленно... и даже вредно.
0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
11.01.2019, 18:38
Цитата Сообщение от greg zakharov Посмотреть сообщение
генератор можно сделать значительно проще и наглядней:
не понятно, что происходит в этих строчках:

Цитата Сообщение от greg zakharov Посмотреть сообщение
0</* :
Цитата Сообщение от greg zakharov Посмотреть сообщение
exit /b*/
0
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,871
11.01.2019, 19:03
Цитата Сообщение от eva2326 Посмотреть сообщение
не понятно, что происходит в этих строчках:
это гибрид помидора(jscript) и картофеля(cmd), названный Путь к социализму, сокращённо ПУКС

Командные сценарии-гибриды
0
0 / 0 / 0
Регистрация: 08.02.2015
Сообщений: 10
11.01.2019, 19:16  [ТС]
eva2326, это именно то, что я хотел. На моем компе вносит данные менее секунды.
Огромнейшее спасибо всем, принявшим участия в моей проблеме.
0
11.01.2019, 19:43

Не по теме:

Цитата Сообщение от eva2326 Посмотреть сообщение
не понятно, что происходит в этих строчках:
как правильно заметили выше, это гибрид, запускающий сам себя и многострочная часть кода, относящаяся к cmd, скрывается от сервера сценариев между символами /* */, т.е. для cscript.exe это будет обычным комментарием.

0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
11.01.2019, 20:19
Цитата Сообщение от volodin661 Посмотреть сообщение
это гибрид
То, что это гибрид - это итак понятно ))

Я читала ветку про гибриды.
Проблема в том, что там нет описания принципов их построения.
А без понимания синтаксиса и логики происходящего код для меня бесполезен.
Я предпочту пусть более многословное, но понятное решение,
чем какие то непонятные закорючки непонятно что и как делающие.

Цитата Сообщение от YuS_2 Посмотреть сообщение
многострочная часть кода, относящаяся к cmd, скрывается от сервера сценариев между символами /* */,
Я догадалась, что символы /* */ образовали
многострочный комментарий на языке вижуал бейсик скрипт.


Это было не сложно.
Смотрите:
Windows Batch file
1
            for /f %%i in ('cscript /nologo /e:jscript "%~f0"') do (
Запуск интерпретатора вижул-бейсик-скриптов.
В качестве исходного текста передаётся батник.
Следовательно все содержимое батника - это теперь скрипт на бейсике.


мне не понятно, как батник (то есть интерпретатор батника cmd)
обрабатывает эти строки:
Цитата Сообщение от greg zakharov Посмотреть сообщение
0</* :
Цитата Сообщение от eva2326 Посмотреть сообщение
exit /b*/
Ещё, не понятно, что на вижул-бейсик-скрипте означает строчка:
Цитата Сообщение от greg zakharov Посмотреть сообщение
0</* :
как vbs воспримет первые два символа: 0<

Добавлено через 9 минут
Ошиблась: это не вижул бейсик скрипт.
Это - джейсон скрипт.

Эта штука: cscript умеет запускать и такие, и такие.
параметр /e:jscript обозначил использовать jscript.
0
6973 / 2866 / 1101
Регистрация: 06.06.2017
Сообщений: 9,741
11.01.2019, 20:32
Цитата Сообщение от Fhnbcn Посмотреть сообщение
На моем компе вносит данные менее секунды.
Если нужна скорость, логично взять код на чистом js/vbs. Гибрид тут не нужен.

Цитата Сообщение от eva2326 Посмотреть сообщение
Это - джейсон скрипт.
Почитайте, что такое JSON, прежде чем эрративами бросаться.
1
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
11.01.2019, 21:22
Цитата Сообщение от eva2326 Посмотреть сообщение
мне не понятно, как батник (то есть интерпретатор батника cmd)
обрабатывает эти строки:
Да, в общем, как пустую команду... это можно проверить экспериментально, создав и запустив батник из таких команд:
Windows Batch file
1
2
3
echo.a
0</* :
echo.b
или так:
Windows Batch file
1
2
3
echo.a
0</* rem
echo.b
а exit /b*/, для интерпретатора, просто "мягкий" выход...

Цитата Сообщение от eva2326 Посмотреть сообщение
как vbs воспримет первые два символа: 0<
опять же, экспериментом можно все проверить...
test.js
JavaScript
1
2
3
4
0< /*
nnnnn
*/
WScript.Echo("Поздравления!")
1
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
12.01.2019, 18:51
Цитата Сообщение от KDE777
...что будет фиксированная длинна...
Желаете сказать, что с Get-Random можно генерировать строку произвольной длинны?
Цитата Сообщение от volodin661
...PERL6 -e ('а'...'z',0...9).roll(32).join.say...
В pwsh, кстати, подобный синтаксис:
PowerShell
1
-join('a'..'z'+0..9|Get-Random -Count 32)
Правда из-за ограниченности Get-Random лучше использовать Linq, нечто вроде:
PowerShell
1
2
$r = [Random]::new()
-join[Linq.Enumerable]::OrderBy('a'..'z'+0..9, [Func[Object, Object]]{$r.Next()})
Задать длину конечной строки можно, скажем, через Range, в то время как Get-Random упорно не желает брать диапазон более ~37 символов (баг\фича?! ковыряться в исходниках не хоцца).
Цитата Сообщение от YuS_2
с привлечением не "чисто" cmd средств, конечно, можно и проще, и нагляднее, с этим спорить бессмысленно...
Не совсем, скорее все зависит от версии ОСи, ведь в каждой последующей (если вести летопись от иконостасной ХР) есть свои плюхи в виде консольных утилит, и тем же curl, что с некоторых пор поставляется с десяткой, можно конвертировать строки в base64 (хотя это к теме по сути и не относится), - есть над чем подумать, подискутировать.
Цитата Сообщение от eva2326
не понятно, что происходит в этих строчках
Хотя вам уже итак все детально объяснили, от себя добавлю, что "проектирование" гибрида основывается на багах (или просто особенностях) синтаксиса командного интерпретатора как такового.
3
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
12.01.2019, 22:33
Цитата Сообщение от greg zakharov Посмотреть сообщение
есть над чем подумать, подискутировать.
Подумать - это зарядка для ума, тут согласен, а вот на счет подискутировать, по вопросу сравнения возможностей чистого cmd и привлекаемых внешних средств ПО... результат дискуссии, вряд ли будет в пользу cmd... к бабке не ходи

Цитата Сообщение от greg zakharov Посмотреть сообщение
Get-Random упорно не желает брать диапазон более ~37 символов
Что-то не совсем понял... пример бы, что за баг там?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.01.2019, 22:33
Помогаю со студенческими работами здесь

Случайная запись из набора
Столкнулся с задачей, когда надо случайно взять запись из определенной выборки, т.е. : Select TOP 10 * From Table Where Table.Column =...

Случайная генерация и запись даты в файл
Здравствуйте, нужна помощь в написание кода который генерирует случайно 30 дат в формате &quot;ДД.ММ.ГГ&quot; и записать их в файл...

изменить запись в реестре
Подскажите плиz, как можно изменить запись в ресстре. К примеру сюда внести запись &quot;С:\Program Files\internet...

Пропадает запись в реестре
в bat файле написано reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v 123 /t REG_SZ /d D:\Win32\123.exe запись в реестр...

Не изменяется запись в реестре
REGEDIT4 @=&quot;%USERPROFILE%\Desktop&quot; Скрипт сохраняю в файл c расширением .reg но запись нифига не менятся...Windows Vista ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru