Reputation: 119
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
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
Reputation: 79982
set var=0000%var%
set var=%var:~-4%
will set the variable var
to leading-zero-filled
Upvotes: 1