批处理文件将随机字符串添加到注册表

时间:2011-11-25 19:33:59

标签: random batch-file registry

我正在尝试创建一个批处理文件,该文件将创建一个随机的四位数字(例如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 个答案:

答案 0 :(得分:1)

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运算符用于批处理文件;如果从命令提示符执行此操作,则只使用一个%

答案 1 :(得分:0)

我认为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

start /wait将导致批处理文件等到regedit4完成后再删除tmp.reg文件。

此外,如果您的窗口立即关闭,请打开“命令提示符”窗口并从那里运行批处理文件(我想您当前正在单击批处理文件的快捷方式)。

答案 2 :(得分:0)

只是一个补充。我们可以使用语法%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

希望这有帮助。