[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[注册表类] reg add 中\作为转义字符为什么“时灵时不灵”

http://bbs.bathome.net/viewthrea ... muid=30829#pid82539
  1. reg add "HKEY_LOCAL_MACHINE\SOFTWARE\hello" /v world /t reg_sz /d "c:\hello world\\" /f
复制代码
我仔细想想,还有个问题,如果\是转义字符的话,为什么
c:\hello world\\ ,hello前面的\没有消失?
echo ^hello 显示的结果是hello——^消失了。——这说明转义过程中即便是不需要转义的符号,还是会得到转义(致使转义字符消失),那么为什么hello前面的\没有消失?

还有就是,如果说"可以转义后面的内容,为什么"c:\hello world\" 最后一个"会被\转义(你尽然作为转义字符,自然可以把特殊符号转义为普通字符)——难道说\的优先级大于"——如果大于,那出现的情况就是不管你加不加",\都会消失(转义了)。
所以我总觉得在reg命令中 \是转义字符的说法有欠考究——因为前后矛盾,难以自圆其说。

^和"是预处理中的转义,而\是正则中的转义,二者是截然不同的,其中的区别在findstr上体现得最明显。

TOP

2# zm900612
恩,两者的作用范围不同。
那你能解释一下,我提出的那些问题吗?——我觉得很疑惑。

TOP

3# Hello123World


我也不知道,所以避而不谈...

TOP

显然预处理时是不会处理\的。
\作为转义,是由具体的命令进行转义的。
reg中的\只转义特定的字符把,转义后自身就消失了,没有转义后不消失。

TOP

^和"是预处理中的转义,而\是正则中的转义,二者是截然不同的,其中的区别在findstr上体现得最明显。
zm900612 发表于 2011-6-14 16:56

应该说^和"cmd是中的转义,而\是reg中的转义

而reg add只处理data中\对"的转义
以便将 "\"c:\program files\test\test.txt\" arg1" 识别成单个字符串
整体添加到注册表键值中
其它的\就被忽略了
天的白色影子

TOP

5楼提到了特定字符,6楼更进一步,\只转义"
暂时这么理解吧,以后发现新问题再来探讨。

TOP

不对不对,6楼的说法不对,如果\只转义"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\hello" /v world /t reg_sz /d "c:\hello world\\" /f
得到的结果却是 c:\hello world\,这说明\转义了\。
还是觉得5楼的靠谱,虽然特定字符太笼统了。

TOP

很明显的,\可以转义引号、空格以及自身,其他的没有测试过,总之没有引号和尖号转义的多。

TOP

空格的转义没看到
自身的转义也仅出现在8楼示例的那个特殊位置中
怀疑是reg自身处理\有bug导致这个问题
天的白色影子

TOP

返回列表