2014-01-13 159 views
0

我從老闆那裏得到了關於批處理腳本的任務。我需要在Windows註冊表文件中搜索特定值(我將定義路徑)。這個值需要被設置爲一個變量(即:%VARIABLENAME%)。這是扭結雖然:批處理腳本註冊表建議

如果在註冊表中的值是一個數字/字符,它需要從三個前導零開始。兩位數字/字符,兩位前導零,三位數/字符,然後一位前導零至最多四位字符(例如:0123)。重點是:如果該值小於四位數/字符,則必須添加足夠的前導零以使其最多爲四。如果它已經四點了,什麼都不要做。

注意:註冊表文件本身不會改變,只是我們在set變量中回顯/表達它的方式。

因此,如果變量是要呼應出它應該看起來像這樣:

echo %VARIABLENAME% 

結果應該是:0abc

馬上,我知道這將需要某種形式的模式匹配,以及一個for循環結構,但我是一個Linux的傢伙,而不是Windows的傢伙。

任何援助將不勝感激。

回答

1
set var=0000%var% 
set var=%var:~-4% 

將設置可變var以領先的零填充

0

這應該工作。

set /p InputText=Type your text here: 
Set RegSearch=REG QUERY HKLM /v 
Set Regend= /s 
set zero=%0000%InputText% 
set out=%RegSearch% "%zero:~-4%" %Regend% 
%out% 

此設置的inputText與值輸入

set /p InputText=Type your text here: 

只是一種搜索

Set RegSearch=REG QUERY HKLM /v 
Set Regend= /s 

這將告訴zerro我們只需要在最後4掏

set zero=0000%InputText% 

一旦設置爲零讓我們設定結果。開始註冊,零,註冊表。

set out=%RegSearch% "%zero:~-4%" %Regend% 
%out% 

您可以測試使用回聲%,共%

使用此鏈接可以看到更多的註冊表命令的結果。 http://technet.microsoft.com/en-us/library/cc742028.aspx

REG Query KeyName [/v [ValueName] | /ve] [/s] [/f Data [/k] [/d] [/c] [/e]] [/t Type] [/z] [/se Separator] 
    KeyName [\\Machine\]FullKey 
     Machine - Name of remote machine, omitting defaults to the 
     current machine. Only HKLM and HKU are available on remote machines 
     FullKey - in the form of ROOTKEY\SubKey name 
     ROOTKEY - [ HKLM | HKCU | HKCR | HKU | HKCC ] 
     SubKey - The full name of a registry key under theselected ROOTKEY 

    /v Queries for a specific registry key values. 
     If omitted, all values for the key are queried. 
     Argument to this switch can be optional only when specified 
     along with /f switch. This specifies to search in valuenames only. 
    /ve Queries for the default value or empty value name (Default). 
    /s Queries all subkeys and values recursively (like dir /s). 
    /se Specifies the separator (length of 1 character only) in 
     data string for REG_MULTI_SZ. Defaults to "\0" as the separator. 
    /f Specifies the data or pattern to search for. 
     Use double quotes if a string contains spaces. Default is "*". 
    /k Specifies to search in key names only. 
    /d Specifies the search in data only. 
    /c Specifies that the search is case sensitive. 
     The default search is case insensitive. 
    /e Specifies to return only exact matches. 
     By default all the matches are returned. 
    /t Specifies registry value data type. 
     Valid types are: REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ, 
     REG_DWORD, REG_QWORD, REG_BINARY, REG_NONE 
     Defaults to all types. 
    /z Verbose: Shows the numeric equivalent for the type of the valuename. 

Examples: 
1. REG Query HKLM\Software\Microsoft\ResKit /v Version 
     Displays the value of the registry value Version 
2. REG Query \\ABC\HKLM\Software\Microsoft\ResKit\Nt\Setup /s 
    Displays all subkeys and values under the registry key Setup 
    on remote machine ABC 
3. REG Query HKLM\Software\Microsoft\ResKit\Nt\Setup /se # 
    Displays all the subkeys and values with "#" as the seperator 
    for all valuenames whose type is REG_MULTI_SZ. 
4. REG Query HKLM /f SYSTEM /t REG_SZ /c /e 
    Displays Key, Value and Data with case sensitive and exact 
    occurrences of "SYSTEM" under HKLM root for the data type REG_SZ 
5. REG Query HKCU /f 0F /d /t REG_BINARY 
    Displays Key, Value and Data for the occurrences of "0F" in data 
    under HKCU root for the data type REG_BINARY 
6. REG Query HKLM\SOFTWARE /ve 
    Displays Value and Data for the empty value (Default) under HKLM\SOFTWARE