2011-11-25 97 views
0

我想創建一個批處理文件,它將創建一個隨機的四位數字(例如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

我真的很想知道你爲什麼這樣做?只是出於好奇。 –

回答

0

我不認爲註冊表編輯器知道如何從它是從運行該批處理文件讀取輸入數據。您可能需要創建一個臨時文件,像這樣(未經):

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文件之前完成。另外,如果你的窗口馬上關閉,然後打開一個「命令提示符」窗口並從那裏運行你的批處理文件(我想你現在正在點擊你的批處理文件的快捷方式)。

+1

這就是我在做什麼我會去測試這個 – Barbrick

+0

只要將該字符串放入正在工作的註冊表中,但仍然會將該隨機數字生成器放在它的上面,那麼它就無法工作。 – Barbrick

+0

你需要'rnd'和'%random%'之間的'='嗎? –

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運算符;如果從命令提示符執行此操作,則只能使用一個%

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 

希望這會有所幫助。

相關問題