Board logo

标题: [注册表类] 求助,用批处理怎么更改注册表中的路径? [打印本页]

作者: 000    时间: 2012-5-16 15:17     标题: 求助,用批处理怎么更改注册表中的路径?

注册表种的路径如下:
程序的路径C:\Program Files\Avid\DS_v10.5
注册表中是绝对路径,如果程序移到别的盘或者目录下,怎么用批处理更改注册表中的路径?

[HKEY_LOCAL_MACHINE\SOFTWARE\Avid\CoExistence\C:|Program Files|Avid|DS_v10.5]
"AppDllPath"="C:|Program Files|Avid|DS_v10.5"
"AppName"="Avid DS"
"AppVersion"="10.5.2"
"DllPathEnvVar"="DSPATH"
"SicorePath"="C:|Program Files|Avid|DS_v10.5"
"SicoreVersion"="10.5.2"
作者: apang    时间: 2012-5-16 15:39

C:|Program Files|Avid|DS_v10.5有这种写法吗?
作者: apang    时间: 2012-5-16 18:11

将C:|Program Files|Avid|DS_v10.5改成E:|Avid|DS_v10.5
  1. @echo off&setlocal enabledelayedexpansion
  2. reg export "HKLM\SOFTWARE\Avid\CoExistence" $
  3. (for /f "delims=" %%a in ('type $') do (
  4.   set "str=%%a"
  5.   set "str=!str:C:|Program Files=E:!"
  6.   echo !str!
  7. ))>$1
  8. reg delete "HKLM\SOFTWARE\Avid\CoExistence\C:|Program Files|Avid|DS_v10.5" /f
  9. reg import $1
  10. del $ $1
复制代码

作者: 000    时间: 2012-5-17 16:35

本帖最后由 000 于 2012-5-17 16:36 编辑

这个批处理文件能不能跟着程序走?

程序如果路径改了,还要改这个批处理文件?类似这种 %cd%
作者: apang    时间: 2012-5-17 17:53

回复 5# 000

假设将C:|Program Files改成批处理当前路径:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "pth=%~dp0"&set "pth=!pth:\=|!"
  3. reg export "HKLM\SOFTWARE\Avid\CoExistence" $
  4. (for /f "delims=" %%a in ('type $') do (
  5.   set "str=%%a"
  6.   set "str=!str:C:|Program Files|=%pth%!"
  7.   echo !str!
  8. ))>$1
  9. reg delete "HKLM\SOFTWARE\Avid\CoExistence\C:|Program Files|Avid|DS_v10.5" /f
  10. reg import $1
  11. del $ $1
复制代码

作者: 000    时间: 2012-5-17 22:26

感谢!感谢!还有2个问题。
1. 如果注册表中有多个项下都有C:|Program Files这样的路径怎么改?

2.您的这段当前命令能不能添加到inf中?是用inf创建的注册表项。
作者: 000    时间: 2012-5-21 13:41

继续请教高手





欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2