NerdyBird
NerdyBird

Reputation: 119

Batch Script Registry Advice

I got an assignment from my boss regarding batch scripting. I need to search for a specific value within a Windows Registry file (I will define the path). This value will need to be SET as a variable (ie: %VARIABLENAME%). Here is the kink though:

If the value in the registry is one digit/character, it needs to start with three leading zeroes. Two digits/characters, two leading zeroes, three digits/characters then one leading zeroes all the way to a maximum of four characters (example: 0123). The point is: if the value is less than four digits/characters, enough leading zeroes must be added to make it a maximum of four. If it's already at four, do nothing.

NOTE: The registry file itself will not be changing, merely the way we echo/express it within the set variable.

So if the variable was to be echoed out it should look like so:

echo %VARIABLENAME%

The result should be: 0abc

Right away, I know this will entail some form of pattern matching, as well as a for loop construct, but I am a Linux guy, not a Windows guy.

Any assistance would be appreciated.

Upvotes: 0

Views: 362

Answers (2)

Avrumi Sherman
Avrumi Sherman

Reputation: 341

This should work.

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%

This Sets the InputText with the value you enter

set /p InputText=Type your text here:  

Just a way to search

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

This will tell zerro we only need the last 4 dig

set zero=0000%InputText%

Once zero is set lets set the outcome. starting reg, zero, regedit.

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

You can test the result by using echo %out%

Use this link to see more registry commands. 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

Upvotes: 0

Magoo
Magoo

Reputation: 79982

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

will set the variable var to leading-zero-filled

Upvotes: 1

Related Questions