Пакетный файл для добавления случайной строки в реестр - PullRequest
0 голосов
/ 25 ноября 2011

Я пытаюсь создать командный файл, который будет создавать случайное четырехзначное число (например, 8472), а затем редактировать строку реестра с этим номером.

Здесь я нахожусь, и она не работает.Как вы видите, в реестре уже есть строка, мне нужен этот скрипт для изменения последних четырех цифр при каждом запуске.Куда я иду не так?Кроме того, пауза не работает мои окна cmd закрываются так быстро, как они открываются.

echo -----------------------------------
echo --------------Testing--------------
echo -----------------------------------

:beg
set rnd %random%
if %rnd% GTR 9999 goto beg
if %rnd% LSS 1111 goto beg

REGEDIT4
; @ECHO OFF
; CLS
; REGEDIT.EXE /S "%~f0"
; EXIT

[HKEY_LOCAL_MACHINE\Software\Test]
"Test"="{12345678-12A1-123B-A12C-123A123B%rnd%}"

Ответы [ 3 ]

1 голос
/ 26 ноября 2011
set /A RND=%RANDOM% %% 8889 + 1111
reg add HKLM\Software\Test /v Test /T REG_SZ /d "{12345678-12A1-123B-A12C-123A123B%RND%}" /f

Должен сделать свое дело. Обратите внимание на удвоенный оператор %% mod для использования в командном файле; если вы делаете это из командной строки, используйте только один %.

0 голосов
/ 15 января 2013

Просто дополнение.Мы можем извлечь символы из правой части строки, используя синтаксис %RANDOM:~-N%, где N - количество запрошенных цифр.Чтобы создать случайное число из 4 цифр, используйте:

> echo %RANDOM:~-4%

Но так как это работает только тогда, когда число> 999:

> set var=0%RANDOM%
> echo %var:~-4%

Так что еще один способ сделать это:

> set /A var=%RANDOM% + 1000
> echo %var:~-4%

Поскольку RANDOM является случайной величиной от 0 до 32767, давайте проверим переполнение:

> set /A var=32767 + 1000
33767

Надеюсь, это поможет.

0 голосов
/ 25 ноября 2011

Я не думаю, что regedit знает, как читать входные данные из командного файла, из которого он запущен.Вам может потребоваться создать временный файл, что-то вроде этого (не проверено):

echo [HKEY_LOCAL_MACHINE\Software\Test] >tmp.reg
echo "Test"="{12345678-12A1-123B-A12C-123A123B%rnd%}" >>tmp.reg
start /wait regedit4 tmp.reg
erase tmp.reg

* * * * * * * * * * * * * * * * * * * * * * * * * * * * 100 '* заставит пакетный файл ждать до тех пор, пока regedit4 не завершится, прежде чем удалять файл tmp.reg.

Кроме того, если ваши окна закрываются сразу же, откройте окно «командная строка» и вместо этого запустите ваш командный файл (я полагаю, вы в настоящее время нажимаете на ярлык для своего командного файла).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...