无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 6405|回复: 12
打印 上一主题 下一主题

[求助] 批处理修改注册表中的C:\和D:\为X:\,这个批处理怎么写呢

[复制链接]
1#
发表于 2018-5-27 13:36:20 | 显示全部楼层
新建文本文件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
回复

使用道具 举报

2#
发表于 2018-5-27 13:39:09 | 显示全部楼层
用到gsar.exe 处理字符串,我从winbuilder中拿出来的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-8 02:21

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表