批處理(.bat)修改註冊表值(遞增)的解決辦法

題目可能表達不是很清楚。

需求:

最新需要一個處理一個註冊表,需要點擊批處理文件,把註冊表裏面的一個值增加2(點一次增加2,點兩次增加4);

呵呵,由於自己沒有接觸過批處理文件,也不懂他的語法,只是平常用,所以連忙查了些資料。

方法一:

 查出註冊表裏面值的大小,再把值增加2

方法二:

先查出,給出一個值判斷是否大於註冊表的裏面的值,大於就直接把系統的值改爲給出的值,不大於就把值增加,再次比較,一致要大於註冊表值才   把系統的值改爲最後給出的值。

由於方法二麻煩,而且接觸到for循環和if判斷,也不簡潔,所以最後採用的是方法一:

方法一思路:

先用 reg query 查出註冊表裏面的值。再賦值給變量a,(最後結果是個字符串)

在截取字符串,把需要的數字給截出來,(這個註冊表的值是DWORD類型的,所以最後結果是十六進制的)。

再用方法轉成十進制。

再把最後的數字類型的值上面加2,

最後把值傳進  reg add  把註冊表相應的值改成加2後的值

代碼:

(路徑,變量名稱都改成了a,b,c來代替)

For /f "d=" %%i in ('reg query "o\v\a\b\c\P" /v  "I" ') do Set  a=%%i   set /a s=%a:~33,4%   // 查詢並賦值給a
set /a n=0x%s%     // 十六進制轉十進制
set /a r=s+2    //加2
reg add  "o\v\a\b\c\P"  /v "I" /t "REG_DWORD" /d   %r%  /f        //reg  add  修改最後值


呵呵

對.bat不是很懂

可能不是最好的思路,所以有什麼不妥或者更好的建議,希望留言或者私信我!

----------------------------------------

在CSDN上問,一個大哥給出了另一個方法,我感腳更專業:

@echo off&setlocal ENABLEDELAYEDEXPANSION
set rPath="HKLM\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters"
for /f "tokens=2 delims=x" %%a in ('reg query %rPath% /v "IRPStackSize"') do (
  set s=0x%%a
  set /a s+=3
  reg add %rPath% /v "IRPStackSize" /d !s! /t REG_DWORD /f
)
pause


參照:

http://www.cnblogs.com/MichaelGuan/archive/2009/11/11/1601301.html

http://blog.csdn.net/elimago/article/details/4145800

http://tieba.baidu.com/p/712640363


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章