Board logo

标题: [注册表类] 用BAT修改注册表,添加特殊字符的方法 [打印本页]

作者: ibm    时间: 2008-9-21 13:06     标题: 用BAT修改注册表,添加特殊字符的方法

要求:

利用BAT,修改注册表中的键值,输入的数据数值中包括[ % " ],代码该如何编写?

例1:
路径:[HKEY_CLASSES_ROOT\.txt\ShellNew]
数值名称:ItemName
类型:REG_EXPAND_SZ
数值数据:@%SystemRoot%\system32\notepad.exe,-470
BAT中的代码应该是:REG ADD "HKCR\.jnt\jntfile\ShellNew" /V "ItemName" /T REG_EXPAND_SZ /D "@%%SystemRoot%%\system32\notepad.exe,-470" /F

例2:
路径:[HKEY_CLASSES_ROOT\Exefile\shell\open\command]
数值名称:默认
类型:REG_SZ
数值数据:"%1" %*
BAT中的代码应该是:REG ADD "HKCR\Exefile\shell\open\command" /VE /T REG_SZ /D """"%%1""" %%*" /F


虽然我经过反复的测试,问题解决了,[%%]运行后会留下一个,但不知道为什么要写那么多[ " ],
不希望下次再遇到类似的问题还是反复测试才能解决,所以在此发帖救助!

谢谢!
作者: Batcher    时间: 2008-9-21 13:15     标题: 回复 1楼 的帖子

引号可以用斜杠来转义
  1. reg add HKEY_CLASSES_ROOT\batfile\shell\open\command /ve /t REG_SZ /d "\"%1\" %*" /f
复制代码

作者: ibm    时间: 2008-9-21 13:20

楼上,你把那条指令放进BAT里试试,就知道结果了
作者: pusofalse    时间: 2008-9-21 13:22

连续多个"是因为"的特性,你就把它当作是同%与^一样的逃逸字符好了。
作者: ibm    时间: 2008-9-21 13:32     标题: 回复 4楼 的帖子

那该如何操作?
比如想输入一个 " 要在前面加3个引号,是成对出现吗?我打不到规律?

路径:[HKEY_CLASSES_ROOT\.contact\ShellNew]
数值名称:command
类型:REG_EXPAND_SZ
数值数据:"%programFiles%\Windows Mail\Wab.exe" /CreateContact "%1"
BAT中的代码应该如何写??

注意,都是运行在BAT中。

[ 本帖最后由 ibm 于 2008-9-21 13:35 编辑 ]
作者: Batcher    时间: 2008-9-21 13:36     标题: 回复 3楼 的帖子

百分号和双引号的转义,批处理和命令行解释器用的方法确实不同,我找找以前写的代码。
作者: Batcher    时间: 2008-9-21 13:59

代码找不到了,说说那么多双引号是如何工作的吧(相同颜色的相互配对):
REG ADD "HKCR\Exefile\shell\open\command" /VE /T REG_SZ /D """"%%1""" %%*" /F
最外层蓝色是为了闭合(转义)空格,这一点大家都知道。第二层的绿色是为了闭合(转义)最中间的红色。
作者: Batcher    时间: 2008-9-21 14:05     标题: 回复 5楼 的帖子

  1. reg add "HKEY_CLASSES_ROOT\.contact\ShellNew" /v command /t REG_EXPAND_SZ /d """"%%programFiles%%\Windows Mail\Wab.exe""" /CreateContact """%%1"""" /f
复制代码

作者: ibm    时间: 2008-9-21 14:06     标题: 回复 7楼 的帖子

看了 Batcher 讲解,完全明白了,
非常感谢!
作者: wxcute    时间: 2008-9-21 15:56

引号太多会看花眼,用\来转义也可以
  1. REG ADD "HKCR\Exefile\shell\open\command" /VE /T REG_SZ /D "\"%1\" %*" /F
复制代码
===============CMD下
REG ADD "HKCR\Exefile\shell\open\command" /VE /T REG_SZ /D "\"%1\" %*" /F
===============
批处理中用%%

[ 本帖最后由 wxcute 于 2008-9-21 15:59 编辑 ]
作者: wxcute    时间: 2008-9-21 18:04

原来之前就有人回答了。算了,留下吧




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