|
新建文本文件SearchReplaceReg-list.txt,内容如下:
HKLM\Tmp_Software#c:\#x:\#-i
HKLM\Tmp_Software#d:\#x:\#-i
HKLM\Tmp_Software#$windows.~bt\#""#-i
新建批处理SearchReplaceRegFromTxtFile.cmd ,内容如下:
::SearchReplaceRegsFromTxtFile SearchReplaceReg.txt
:main
@echo off
set result=
echo.
echo 已进入%~f0
echo ==========================================================================
if "%1" EQU "" (
echo target file can't be empty.
call:end&goto:eof
)
if not exist %1 (
echo not exit %1
call:end&goto:eof
)
for /f "tokens=1,2,3,4* delims=#" %%i in (%1) do (
if %%k EQU "" (
echo call SearchReplaceReg "%%i" "%%j" %%k %%l ...
call SearchReplaceReg "%%i" "%%j" %%k %%l
) else (
echo call SearchReplaceReg "%%i" "%%j" "%%k" %%l ...
call SearchReplaceReg "%%i" "%%j" "%%k" %%l
)
)
set result=true&call:end&goto:eof
:end
echo.
echo 已退出%~f0
echo.
goto:eof
新建批处理SearchReplaceReg.cmd,内容如下:
::SearchReplaceReg.cmd "HKLM\Tmp_Software" "c:\" "x:\" -i
:main
@echo off
set result=
echo.
echo 已进入%~f0
echo ==========================================================================
if "%1" EQU "" (
echo HK can't be emtpy.
call:end&goto:eof
)
if "%2" EQU "" (
echo SearchStr can't be emtpy.
call:end&goto:eof
)
if "%3" EQU "" (
echo SearchStr can't be emtpy.
call:end&goto:eof
)
setlocal enabledelayedexpansion
set SearchResultFile=%temp%\%random%.txt
if exist %SearchResultFile% del %SearchResultFile%
set SearchStr=%2
set ReplaceStr=%3
set SearchStr=%SearchStr:\=\\%
set ReplaceStr=%ReplaceStr:\=\\%
if "%4" EQU "-i" ( set gIgnoreCase=-i && set rIgnoreCase= ) else (set gIgnoreCase= && set rIgnoreCase=/c)
echo reg query %1 /f %2 /d /s %rIgnoreCase% output to %SearchResultFile% ...
reg query %1 /f %SearchStr% /d /s %rIgnoreCase% >%SearchResultFile%
gsar -s" " -r` -o %SearchResultFile%
set c=:
set d=::
set SearchStr=!SearchStr:%c%=%d%!
set ReplaceStr=!ReplaceStr:%c%=%d%!
gsar -s%SearchStr% -r%ReplaceStr% -o %SearchResultFile% %gIgnoreCase%
set /a n=0
for /f "tokens=1,2,3* delims=`" %%i in (%SearchResultFile%) do (
if "%%j" EQU "" (set key=%%i) else (
if "!key!" NEQ "搜索结束:" (
set data=%%k
if "!data:~-1!" EQU "\" set data=!data!\
set data=!data:"=\"!
if "%%i" EQU "(默认)" (
echo reg add "!key!" /f /ve /t %%j /d "!data!" ...
reg add "!key!" /f /ve /t %%j /d "!data!"
) else (
echo reg add "!key!" /f /v "%%i" /t %%j /d "!data!" ...
reg add "!key!" /f /v "%%i" /t %%j /d "!data!"
)
)
)
)
endlocal&set result=true&call:end&goto:eof
:end
echo.
echo 已退出%~f0
echo.
goto:eof |
|