标题: 如何用当前路径替换reg文件里指定?路径要双斜杠
[打印本页]
作者: pzppzp
时间: 2008-5-20 12:37
标题: 如何用当前路径替换reg文件里指定?路径要双斜杠
如何用当前路径替换reg文件里指定内容?路径要双斜杠
比如一个reg文件内容如下:
[HKEY_CLASSES_ROOT\ProtelPCBFile\Shell\Open]
[HKEY_CLASSES_ROOT\ProtelPCBFile\Shell\Open\Command]
@="C:\\Program Files\\Design Explorer 99 SE\\Client99SE.exe %1"
[HKEY_CLASSES_ROOT\ProtelSchematicFile]
[HKEY_CLASSES_ROOT\ProtelSchematicFile\DefaultIcon]
@="C:\\Program Files\\Design Explorer 99 SE\\System\\Advsch.dll,0"
[HKEY_CLASSES_ROOT\ProtelSchematicFile\Shell]
要把里面的"C:\\Program Files\\Design Explorer 99 SE\\"换成当前目录,路径要双斜杠. 求高人指导
作者: huahua0919
时间: 2008-5-20 13:26
a.reg
@echo off&&setlocal enabledelayedexpansion
set path0=%~dp0
set path1=%path0:\=\\%
set path2=C:\\Program Files\\Design Explorer 99 SE\\
for /f "delims=" %%i in (a.reg) do (
set x=%%i
set t=!x:%path2%=%path1%!
echo !t!
)
作者: HAT
时间: 2008-5-20 13:32
@echo off
change a.reg /from "\\" /to "\" /in "C:\\Program Files\\Design Explorer 99 SE\\"
change a.reg /from "C:\Program Files\Design Explorer 99 SE\" /to "%~dp0"
change a.reg /from "\" /to "\\" /in "%~dp0"
change.exe
http://upload.cn-dos.net/img/427.zip
作者: pzppzp
时间: 2008-5-20 13:48
我把CMD文件和a.reg文件放到同一个目录下
两种都没不能替换啊
作者: huahua0919
时间: 2008-5-20 13:54
@echo off&&setlocal enabledelayedexpansion
set n=0
set path0=%~dp0
set path1=%path0:\=\\%
set path2=C:\\Program Files\\Design Explorer 99 SE\\
for /f "delims=" %%i in ('type a.reg') do (
set x=%%i
set t=!x:%path2%=%path1%!
if !n! equ 1 (echo. >>b.txt)
if !n! equ 3 (echo. >>b.txt)
if !n! equ 4 (echo. >>b.txt)
if !n! equ 6 (echo. >>b.txt)
echo !t! >>b.txt
set/a n+=1
)
pause
加个pause就看到替换了
[
Last edited by huahua0919 on 2008-5-20 at 03:53 PM ]
作者: HAT
时间: 2008-5-20 14:48
如果想用3楼的代码,请确保change.exe也放到同一个目录下。
作者: pzppzp
时间: 2008-5-20 15:44
可是要怎么才能替换后保存起来,或者另存为B.REG也行啊?
我试了上面的全部不能保存
作者: huahua0919
时间: 2008-5-20 15:53
改过了,保存不就是 重新定向吗
>>
作者: pzppzp
时间: 2008-5-20 16:01
但是他会在每行的后面加一个空格
而且有的空行会删除,有的地方会加空行,感觉 有点乱
[HKEY_CLASSES_ROOT\.ddb]
@="ProtelDesignFile"
[HKEY_CLASSES_ROOT\.pcb]
@="ProtelPCBFile"
[HKEY_CLASSES_ROOT\.sch]
@="ProtelSchematicFile"
[HKEY_CLASSES_ROOT\ProtelDesignFile]
[HKEY_CLASSES_ROOT\ProtelDesignFile\DefaultIcon]
@="D:\\dfgdf aesfa\\System\\SmartDoc.ico"
[HKEY_CLASSES_ROOT\ProtelDesignFile\Shell]
[HKEY_CLASSES_ROOT\ProtelDesignFile\Shell\Open]
[HKEY_CLASSES_ROOT\ProtelDesignFile\Shell\Open\Command]
@="\"D:\\dfgdf aesfa\\Client99SE.exe\" \"%1\""
源文件在下面
[HKEY_CLASSES_ROOT\.ddb]
@="ProtelDesignFile"
[HKEY_CLASSES_ROOT\.pcb]
@="ProtelPCBFile"
[HKEY_CLASSES_ROOT\.sch]
@="ProtelSchematicFile"
[HKEY_CLASSES_ROOT\ProtelDesignFile]
[HKEY_CLASSES_ROOT\ProtelDesignFile\DefaultIcon]
@="C:\\Program Files\\Design Explorer 99 SE\\System\\SmartDoc.ico"
[HKEY_CLASSES_ROOT\ProtelDesignFile\Shell]
[HKEY_CLASSES_ROOT\ProtelDesignFile\Shell\Open]
[HKEY_CLASSES_ROOT\ProtelDesignFile\Shell\Open\Command]
@="\"C:\\Program Files\\Design Explorer 99 SE\\Client99SE.exe\" \"%1\""
作者: bat-zw
时间: 2008-5-20 16:10
用findstr /n就能避免这种混乱的出现。
作者: pzppzp
时间: 2008-5-20 16:12
具体要怎么弄啊,我把全部原文发来
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.ddb]
@="ProtelDesignFile"
[HKEY_CLASSES_ROOT\.pcb]
@="ProtelPCBFile"
[HKEY_CLASSES_ROOT\.sch]
@="ProtelSchematicFile"
[HKEY_CLASSES_ROOT\ProtelDesignFile]
[HKEY_CLASSES_ROOT\ProtelDesignFile\DefaultIcon]
@="C:\\Program Files\\Design Explorer 99 SE\\System\\SmartDoc.ico"
[HKEY_CLASSES_ROOT\ProtelDesignFile\Shell]
[HKEY_CLASSES_ROOT\ProtelDesignFile\Shell\Open]
[HKEY_CLASSES_ROOT\ProtelDesignFile\Shell\Open\Command]
@="\"C:\\Program Files\\Design Explorer 99 SE\\Client99SE.exe\" \"%1\""
[HKEY_CLASSES_ROOT\ProtelPCBFile]
[HKEY_CLASSES_ROOT\ProtelPCBFile\DefaultIcon]
@="C:\\Program Files\\Design Explorer 99 SE\\System\\AdvPCB.dll,0"
[HKEY_CLASSES_ROOT\ProtelPCBFile\Shell]
[HKEY_CLASSES_ROOT\ProtelPCBFile\Shell\Open]
[HKEY_CLASSES_ROOT\ProtelPCBFile\Shell\Open\Command]
@="C:\\Program Files\\Design Explorer 99 SE\\Client99SE.exe %1"
[HKEY_CLASSES_ROOT\ProtelSchematicFile]
[HKEY_CLASSES_ROOT\ProtelSchematicFile\DefaultIcon]
@="C:\\Program Files\\Design Explorer 99 SE\\System\\Advsch.dll,0"
[HKEY_CLASSES_ROOT\ProtelSchematicFile\Shell]
[HKEY_CLASSES_ROOT\ProtelSchematicFile\Shell\Open]
[HKEY_CLASSES_ROOT\ProtelSchematicFile\Shell\Open\Command]
@="C:\\Program Files\\Design Explorer 99 SE\\Client99SE.exe %1"
作者: bat-zw
时间: 2008-5-20 18:21
标题: 忙,先留个地,我会回复的:
终于有时间回复了:
@echo off
set puth1=C:\\Program Files\\Design Explorer 99 SE\\
set puth2=%~dp0
set puth2=%puth2:\=\\%
for /f "tokens=1* delims=: " %%i in ('findstr /n ".*" a.reg') do (
set str=%%j&set /a n+=1
setlocal enabledelayedexpansion
if defined str set str=!str:%puth1%=%puth2%!
if !n! equ 1 (
echo.!str!>a.reg
) else (
echo.!str!>>a.reg
)
endlocal
)
echo 替换完成!
pause>nul
[
Last edited by zw19750516 on 2008-5-20 at 06:49 PM ]
作者: 不得不爱
时间: 2008-5-20 18:56
@echo off
setlocal enabledelayedexpansion
set path0=%~dp0
set path0=%path0:\=\\%
set path1=C:\\Program Files\\Design Explorer 99 SE\\
for /f "delims=: tokens=1,*" %%a in ('findstr/n /v "+" a.reg') do (
if %%b.==. (echo.>>b.txt) ELSE (
set x=%%b
set y=!x:%path1%=%path0%!
echo !y!>>b.txt
)
)
pause
del a.reg
ren b.txt a.reg
作者: metoo
时间: 2008-5-20 19:19
感觉文本替换这种需求比较大的可以去学perl。。。
作者: bat-zw
时间: 2008-5-20 20:11
向四川的不得不爱超级版主致之亲切的问候,同时祝福所有四川的会员兄弟!
作者: pzppzp
时间: 2008-5-20 20:21
12楼和13楼的不行啊
转出后内容变成了
㉗㌺㐺㔺㘺㜺㠺㤺ㄺ㨰ㄱㄺ㨲㌱ㄺ㨴㔱ㄺ㨶㜱ㄺ㨸㤱㈺㨰ㄲ㈺㨲㌲㈺㨴㔲㈺㨶㜲㈺㨸㤲㌺㨰ㄳ㌺㨲㌳㌺㨴㔳㌺㨶㜳㌺㨸㤳㐺㨰ㄴ㐺㨲㌴㐺㨴㔴㐺㨶㜴ഺ
作者: bat-zw
时间: 2008-5-20 20:23
我都测试了的,不知道怎么你那里就不行了。
附转换后的内容:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.ddb]
@="ProtelDesignFile"
[HKEY_CLASSES_ROOT\.pcb]
@="ProtelPCBFile"
[HKEY_CLASSES_ROOT\.sch]
@="ProtelSchematicFile"
[HKEY_CLASSES_ROOT\ProtelDesignFile]
[HKEY_CLASSES_ROOT\ProtelDesignFile\DefaultIcon]
@="D:\\批处理\\System\\SmartDoc.ico"
[HKEY_CLASSES_ROOT\ProtelDesignFile\Shell]
[HKEY_CLASSES_ROOT\ProtelDesignFile\Shell\Open]
[HKEY_CLASSES_ROOT\ProtelDesignFile\Shell\Open\Command]
@="\"D:\\批处理\\Client99SE.exe\" \"%1\""
[HKEY_CLASSES_ROOT\ProtelPCBFile]
[HKEY_CLASSES_ROOT\ProtelPCBFile\DefaultIcon]
@="D:\\批处理\\System\\AdvPCB.dll,0"
[HKEY_CLASSES_ROOT\ProtelPCBFile\Shell]
[HKEY_CLASSES_ROOT\ProtelPCBFile\Shell\Open]
[HKEY_CLASSES_ROOT\ProtelPCBFile\Shell\Open\Command]
@="D:\\批处理\\Client99SE.exe %1"
[HKEY_CLASSES_ROOT\ProtelSchematicFile]
[HKEY_CLASSES_ROOT\ProtelSchematicFile\DefaultIcon]
@="D:\\批处理\\System\\Advsch.dll,0"
[HKEY_CLASSES_ROOT\ProtelSchematicFile\Shell]
[HKEY_CLASSES_ROOT\ProtelSchematicFile\Shell\Open]
[HKEY_CLASSES_ROOT\ProtelSchematicFile\Shell\Open\Command]
@="D:\\批处理\\Client99SE.exe %1"
[
Last edited by zw19750516 on 2008-5-20 at 08:26 PM ]
作者: pzppzp
时间: 2008-5-20 21:06
我在XP下用12楼的代码试了,还是变成了
ㄺ㨴㔱ㄺ㨶㜱ㄺ㨸㤱㈺㨰ㄲ㈺㨲
可惜这里不方便发附件
作者: pzppzp
时间: 2008-5-20 21:49
好人帮帮忙啊,在线急等
作者: zqz0012005
时间: 2008-5-20 22:08
注册表导出的是Unicode字符集。findstr和for等大部分命令都不能识别。但type可以,且输出为ANSI
('type a.reg^|findstr /n .*')
作者: pzppzp
时间: 2008-5-20 22:14
注册表导出的是Unicode字符集,REG文件也就是txt文本文件呀
不明白,具体要怎么弄啊
作者: zqz0012005
时间: 2008-5-20 22:17
啥眼神啊
('type a.reg^|findstr /n .*')
没看见?
作者: pzppzp
时间: 2008-5-20 22:24
不懂啊
作者: pzppzp
时间: 2008-5-24 11:28
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{042BADC5-5E58-11CE-B610-524153480001}\InprocServer32]
@="C:\\Program Files\\Design Explorer 99 SE\\System\\VCF132.OCX"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{042BADC5-5E58-11CE-B610-524153480001}\ToolboxBitmap32]
@="C:\\Program Files\\Design Explorer 99 SE\\System\\VCF132.OCX, 19401"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{042BADC9-5E58-11CE-B610-524153480001}\InprocServer32]
@="C:\\Program Files\\Design Explorer 99 SE\\System\\VCF132.OCX"
不好意思,这些内容必须发到论坛再复制回去才能用上面的批处理正确的加上\\
作者: yjq635
时间: 2008-5-24 12:21
inf文件支持相对路径,,
hkcr,"豪杰超级解霸_DAT\Shell\Open\Command",,,"%01%\豪杰V9.exe %%1"