我正在尝试创建一个批处理文件,该文件将创建一个随机的四位数字(例如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%}"
答案 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
希望这有帮助。