![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 12:34 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,254 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如果追加内容到注册表的键值?是追加而不是替换! |
| 可打印版本 999 / 14 |
| 第1楼 okace | 发表于 2008-08-21 21:10 |
| 初级用户 发帖 15 积分 130 | |
|
如果追加内容到注册表的键值?是追加而不是替换! 在论坛看了好几篇关于修改注册表的帖子,没找到追加注册表键值的内容,只好发帖来问。
问题1: 已知:Path=C:\one one 如何得到Path2,使Path2=C:\one one\two 其中two是固定值,one one代表含空格名称的文件夹。 问题2: 如何让一个注册表项PATH的键值从 Path=C:\one one;C:\three three; 改为 Path=C:\one one;C:\three three;C:\one one\two; 就是把Path2的内容追加到Path的键值中? 我的实际情况是: 请指教,谢谢! [ Last edited by okace on 2008-8-22 at 12:43 AM ] |
|
| 第2楼 lxmxn | 发表于 2008-08-21 21:28 |
| 版主 发帖 4,938 积分 11,386 | |
|
1、path2=%path%.\two
2、path=%path%;C:\one one\two; |
|
| 第3楼 okace | 发表于 2008-08-21 23:02 |
| 初级用户 发帖 15 积分 130 | |
|
我承认我的提问做了误导。不过第二个问题是关于注册表键值的,楼上的答案好像不行吧?
问题2: 注册表项PATH的键值是C:\one one;C:\three three; 要改为 C:\one one;C:\three three;C:\one one\two; |
|
| 第4楼 HAT | 发表于 2008-08-21 23:37 |
| 版主 发帖 5,017 积分 9,023 | |
| 第5楼 okace | 发表于 2008-08-21 23:38 |
| 初级用户 发帖 15 积分 130 | |
|
我的实际情况是:
请问上面的状况如何解决?我知道增加注册表项用 reg add 命令,但是实在不知如何利用变量!请大家帮忙! [ Last edited by okace on 2008-8-21 at 11:43 PM ] |
|
| 第6楼 HAT | 发表于 2008-08-21 23:46 |
| 版主 发帖 5,017 积分 9,023 | |
| 第7楼 okace | 发表于 2008-08-22 00:05 |
| 初级用户 发帖 15 积分 130 | |
|
楼上的先多谢了!
我看到for就头晕,正在理解中。 不过看到你应该是读取项TestPath的键值来定义two的路径,可是我希望使用setup.bat所在目录的当前路径来定义two的路径。 还有项TestPath的键值不止两个目录(C:\one one和C:\three three),而是多个目录。从代码上看好像该键值被分成两段SrcPathL和SrcPathR,一定要这样才可以吗? 还有路径都含空格,这允许吗? 还没测试,我马上测试。 |
|
| 第8楼 HAT | 发表于 2008-08-22 00:10 |
| 版主 发帖 5,017 积分 9,023 | |
|
测试以后再提问:)
|
|
| 第9楼 okace | 发表于 2008-08-22 00:16 |
| 初级用户 发帖 15 积分 130 | |
|
测试后项TestPath的键值为 ~-1SrcPathR;C:\one one\Setup.battwo
测试的注册表项TestPath的键值不是两个目录,是多个目录。 |
|
| 第10楼 okace | 发表于 2008-08-22 00:20 |
| 初级用户 发帖 15 积分 130 | |
|
测试的注册表项TestPath的键值改成两个目录,结果仍然同9楼。
|
|
| 第11楼 okace | 发表于 2008-08-22 14:44 |
| 初级用户 发帖 15 积分 130 | |
|
经多次试验修改6楼的代码如下:
经修改后基本满足要求了。非常感谢 HAT 的帮助。 可是 set CurPath=%~f0two 这行代码不理解啊,输入结果是当前目录含文件名的,比如会输出 D:\temp\a.battwo 。关于 %~f0 参数,请问哪里有资料可以参考?我在帮助里找不到这个参数。 [ Last edited by okace on 2008-8-22 at 03:13 PM ] |
|
| 第12楼 HAT | 发表于 2008-08-22 16:25 |
| 版主 发帖 5,017 积分 9,023 | |
|
把
set CurPath=%~f0two 改成 set CurPath=%~dp0two 可以看看帮助: for /? |
|
| 第13楼 shenqingzj | 发表于 2008-08-22 17:45 |
| 新手上路 发帖 1 积分 2 | |
|
up
|
|
| 第14楼 okace | 发表于 2008-08-22 19:10 |
| 初级用户 发帖 15 积分 130 | |
另外,FOR 变量参照的替换已被增强。您现在可以使用下列 这段我看到过,可是使用I替换0反而运行错误,我还以为不是这个参数。 请问为什么使用 %~f0 而不是帮助里的 %~fI 参数? |
|
| 第15楼 HAT | 发表于 2008-08-22 21:03 |
| 版主 发帖 5,017 积分 9,023 | |
|
%0代表批处理文件本身,不能替换成%I
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |