用批處理命令查詢注冊表項的命令為
REG QUERY ...
具體的使用信息在命令行窗口中輸入
REG QUERY /?
在這里我們需要查詢一個具體的key-value,則使用下面的命令
REG QUERY [REG PATH] /v [KEY]
舉個例子
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\ClientSetup" /v "Path"
顯示結果如下:
D:\Work\學習文檔\批處理>reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\ClientSetup" /v "Path" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\ClientSetup Path REG_SZ C:\Program Files\Microsoft SQL Server\110\Tools\Binn\
我們要把紅色的部分取出來,注意reg批處理命令這里的輸出結果是兩行,我們要取出來的是第二行的后半部分。我們用for 將這部分取出來。先來說一下for的基本結構:
for /f "tokens=1,2 delims=:" %%a in(‘REG QUERY [REG_PATH]') do ( set "value1=%%a" set "value2=%%b" )
for循環對REG QUERY取出的兩行分別處理,取出的每行值保存在變量%%a中,但是這里使用了tokens 和delims,delims指定了分割字符串的字符,這里也就是用":"將每行字符串進行分割,tokens=1,2 表示取出分割之后的前兩列,第一列保存在%%a中,第二列保存在%%b中(如果有第三列則保存在%%c中)。。。繼續看上面的例子。
echo off for /f "tokens=1,2 delims=:" %%a in('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\ClientSetup" /v "Path"') do ( set "value1=%%a" echo %value1% set "value2=%%b" echo %value2% )
最終的變量值
value1 = Path REG_SZ C
value2 = \Program Files\Microsoft SQL Server\110\Tools\Binn\
將value1的倒數第一個字符(也就是盤符c)和value2連接起來,中間用 :
set "value2=%value1:~-1%:%value2%"