无忧启动论坛

标题: 用CMD修改注册表,如何转移^? [打印本页]

作者: moran    时间: 2017-2-17 14:28
标题: 用CMD修改注册表,如何转移^?
比如下面这个示例,直接在命令行运行,怎么才能转移掉“^”?
reg add "HKCR\TEST" /v "test" /d "^%SystemRoot^%\MY files" /T REG_EXPAND_SZ /f
网上搜的用 "^%SystemRoot^%",发现还是不能转移“^”。。不知论坛上各位大大有没有什么方法?在这里先表示感谢。。
作者: moran    时间: 2017-2-17 14:33
或者有没有其它方法,导入后还是变量而不是转成实际路径?

作者: 不知    时间: 2017-2-17 15:00
CMD下用两个百分号就行,比如%%systemroot%%在CMD运行时表示%systemroot%。
作者: moran    时间: 2017-2-17 15:50
本帖最后由 moran 于 2017-2-17 15:52 编辑
不知 发表于 2017-2-17 15:00
CMD下用两个百分号就行,比如%%systemroot%%在CMD运行时表示%systemroot%。


                                                                                两个百分号只能在批处理里用,直接CMD窗口输入是不行的。。
用了两个百分号注册表里变成: %C:\Windows%       
作者: 不知    时间: 2017-2-17 16:31
moran 发表于 2017-2-17 15:50
两个百分号只能在批处理里用,直接CMD窗口输入是不行的。。
用了两个百分号注册表里变成:  ...

确实如此,命令行里要用^符号。
作者: 1400700226    时间: 2017-2-17 16:32
你的问题应该是cmd中怎样避免变量被解释

我测试,如果值不包含特殊符号或者空格的话,不加引号括起来就不会有问题了

看来引号不是都加了才好啊




作者: moran    时间: 2017-2-17 17:39
1400700226 发表于 2017-2-17 16:32
你的问题应该是cmd中怎样避免变量被解释

我测试,如果值不包含特殊符号或者空格的话,不加引号括起来就 ...

对,不加引号^%***^%就可以。。
关键是加了引号没搞明白该怎么写?
作者: 1400700226    时间: 2017-2-17 17:53
moran 发表于 2017-2-17 17:39
对,不加引号^%***^%就可以。。
关键是加了引号没搞明白该怎么写?

这个我也不懂了。。。请教一下各位大神去 。。
作者: 不知    时间: 2017-2-17 18:33
1.极端的方法,清除SystemRoot变量(set SystemRoot=),这样直接用%SystemRoot%就行了。
不过这样在后面除非重新手动设置SystemRoot(set SystemRoot=C:\windows(具体情况可能不同))或者重新打开CMD窗口,不然在后面的命令里都无法解析SystemRoot变量。
________________________
2.把引号放在适当的位置,比如%systemroot%\d f写成^%SystemRoot^%\"d f"。

作者: 1400700226    时间: 2017-2-17 18:39
不知 发表于 2017-2-17 18:33
1.极端的方法,清除SystemRoot变量(set SystemRoot=),这样直接用%SystemRoot%就行了。
不过这样在后面 ...

嘿,你这个办法好!厉害!
还可以在每个特殊符号比如空格前加上转义^,也能达到同样的效果
作者: nttwqz    时间: 2017-2-17 20:21
  1. reg add hkcc\test /ve /d ""%windir"%\system 32" /f
复制代码

作者: moran    时间: 2017-2-17 23:14
本帖最后由 moran 于 2017-2-17 23:15 编辑
不知 发表于 2017-2-17 18:33
1.极端的方法,清除SystemRoot变量(set SystemRoot=),这样直接用%SystemRoot%就行了。
不过这样在后面 ...


谢谢,你这个写法有效,但是“"”要在“\”前面,^%SystemRoot^%"\a b"
另外我试了一下,还可以这样写,""%"SystemRoot"%"\a b"
       
作者: moran    时间: 2017-2-17 23:18
1400700226 发表于 2017-2-17 18:39
嘿,你这个办法好!厉害!
还可以在每个特殊符号比如空格前加上转义^,也能达到同样的效果

空格前加转移符貌似不行,我试过“^”和“\”都不行。
作者: moran    时间: 2017-2-17 23:21
nttwqz 发表于 2017-2-17 20:21

谢谢回复,原来百分号前一个引号就可以了,后面不用也可以。
作者: 1400700226    时间: 2017-2-17 23:44
moran 发表于 2017-2-17 23:18
空格前加转移符貌似不行,我试过“^”和“\”都不行。

很抱歉我没有亲自测试就发上来了。还真是不行。

看来还是 不知 友经验丰富啊 。

在每一个特殊符号两端加引号就可以了
作者: yfwang0798    时间: 2017-2-19 23:00
^%systemroot^%中^不是转义符

reg  中 用\" 转义 "
批处理中用 %%转义 %
将下列代码,保存为批处理

@echo off
reg add "HKCU\software" /v "test" /d "\"%%SystemRoot%%\MY files\"" /T REG_EXPAND_SZ /f
reg add "HKCU\software" /v "test2" /d  "\"%%userprofile%%\MY files\"" /T REG_EXPAND_SZ /f
pause
作者: xiaoxiaokk    时间: 2017-2-26 17:57
顶一个




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3