中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何用当前路径替换reg文件里指定?路径要双斜杠
<<   [1] [2]  >>   >
作者:
标题: 如何用当前路径替换reg文件里指定?路径要双斜杠 上一主题 | 下一主题
pzppzp
初级用户





积分 110
发帖 52
注册 2007-7-25
状态 离线
『楼 主』:  如何用当前路径替换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\\"换成当前目录,路径要双斜杠. 求高人指导


2008-5-20 12:37
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 2 楼』:  

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!
)


2008-5-20 13:26
查看资料  发送邮件  访问主页  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 3 楼』:  

@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




2008-5-20 13:32
查看资料  发短消息  网志   编辑帖子  回复  引用回复
pzppzp
初级用户





积分 110
发帖 52
注册 2007-7-25
状态 离线
『第 4 楼』:  

我把CMD文件和a.reg文件放到同一个目录下 两种都没不能替换啊


2008-5-20 13:48
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 5 楼』:  

@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 ]


2008-5-20 13:54
查看资料  发送邮件  访问主页  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  

如果想用3楼的代码,请确保change.exe也放到同一个目录下。




2008-5-20 14:48
查看资料  发短消息  网志   编辑帖子  回复  引用回复
pzppzp
初级用户





积分 110
发帖 52
注册 2007-7-25
状态 离线
『第 7 楼』:  

可是要怎么才能替换后保存起来,或者另存为B.REG也行啊? 我试了上面的全部不能保存


2008-5-20 15:44
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 8 楼』:  

改过了,保存不就是 重新定向吗 >>


2008-5-20 15:53
查看资料  发送邮件  访问主页  发短消息  网志   编辑帖子  回复  引用回复
pzppzp
初级用户





积分 110
发帖 52
注册 2007-7-25
状态 离线
『第 9 楼』:  

但是他会在每行的后面加一个空格 而且有的空行会删除,有的地方会加空行,感觉 有点乱 [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\""


2008-5-20 16:01
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 10 楼』:  

用findstr /n就能避免这种混乱的出现。




批处理之家新域名:www.bathome.net
2008-5-20 16:10
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
pzppzp
初级用户





积分 110
发帖 52
注册 2007-7-25
状态 离线
『第 11 楼』:  

具体要怎么弄啊,我把全部原文发来 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"


2008-5-20 16:12
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 12 楼』:  忙,先留个地,我会回复的:

终于有时间回复了:
@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 ]




批处理之家新域名:www.bathome.net
2008-5-20 18:21
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 13 楼』:  

@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




2008-5-20 18:56
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
metoo
初级用户





积分 195
发帖 93
注册 2006-10-28
状态 离线
『第 14 楼』:  

感觉文本替换这种需求比较大的可以去学perl。。。


2008-5-20 19:19
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 15 楼』:  

向四川的不得不爱超级版主致之亲切的问候,同时祝福所有四川的会员兄弟!




批处理之家新域名:www.bathome.net
2008-5-20 20:11
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
<<   [1] [2]  >>   >
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: