无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 4054|回复: 16

用CMD修改注册表,如何转移^?

[复制链接]
发表于 2017-2-17 14:28:11 | 显示全部楼层 |阅读模式
比如下面这个示例,直接在命令行运行,怎么才能转移掉“^”?
reg add "HKCR\TEST" /v "test" /d "^%SystemRoot^%\MY files" /T REG_EXPAND_SZ /f
网上搜的用 "^%SystemRoot^%",发现还是不能转移“^”。。不知论坛上各位大大有没有什么方法?在这里先表示感谢。。
 楼主| 发表于 2017-2-17 14:33:26 | 显示全部楼层
或者有没有其它方法,导入后还是变量而不是转成实际路径?
回复

使用道具 举报

发表于 2017-2-17 15:00:17 | 显示全部楼层
CMD下用两个百分号就行,比如%%systemroot%%在CMD运行时表示%systemroot%。

点评

两个百分号只能在批处理里用,直接CMD窗口是不行的。。 用了两个百分号注册表里变成: %C:\Windows%  详情 回复 发表于 2017-2-17 15:50
回复

使用道具 举报

 楼主| 发表于 2017-2-17 15:50:25 | 显示全部楼层
本帖最后由 moran 于 2017-2-17 15:52 编辑
不知 发表于 2017-2-17 15:00
CMD下用两个百分号就行,比如%%systemroot%%在CMD运行时表示%systemroot%。


                                                                                两个百分号只能在批处理里用,直接CMD窗口输入是不行的。。
用了两个百分号注册表里变成: %C:\Windows%       

点评

确实如此,命令行里要用^符号。  详情 回复 发表于 2017-2-17 16:31
回复

使用道具 举报

发表于 2017-2-17 16:31:40 | 显示全部楼层
moran 发表于 2017-2-17 15:50
两个百分号只能在批处理里用,直接CMD窗口输入是不行的。。
用了两个百分号注册表里变成:  ...

确实如此,命令行里要用^符号。
回复

使用道具 举报

发表于 2017-2-17 16:32:44 | 显示全部楼层
你的问题应该是cmd中怎样避免变量被解释

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

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

2017-02-17_163121.jpg

2017-02-17_163127.jpg

点评

对,不加引号^%***^%就可以。。 关键是加了引号没搞明白该怎么写?  详情 回复 发表于 2017-2-17 17:39
回复

使用道具 举报

 楼主| 发表于 2017-2-17 17:39:05 | 显示全部楼层
1400700226 发表于 2017-2-17 16:32
你的问题应该是cmd中怎样避免变量被解释

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

对,不加引号^%***^%就可以。。
关键是加了引号没搞明白该怎么写?

点评

这个我也不懂了。。。请教一下各位大神去 。。  详情 回复 发表于 2017-2-17 17:53
回复

使用道具 举报

发表于 2017-2-17 17:53:07 | 显示全部楼层
moran 发表于 2017-2-17 17:39
对,不加引号^%***^%就可以。。
关键是加了引号没搞明白该怎么写?

这个我也不懂了。。。请教一下各位大神去 。。
回复

使用道具 举报

发表于 2017-2-17 18:33:41 | 显示全部楼层
1.极端的方法,清除SystemRoot变量(set SystemRoot=),这样直接用%SystemRoot%就行了。
不过这样在后面除非重新手动设置SystemRoot(set SystemRoot=C:\windows(具体情况可能不同))或者重新打开CMD窗口,不然在后面的命令里都无法解析SystemRoot变量。
________________________
2.把引号放在适当的位置,比如%systemroot%\d f写成^%SystemRoot^%\"d f"。

点评

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

使用道具 举报

发表于 2017-2-17 18:39:54 | 显示全部楼层
不知 发表于 2017-2-17 18:33
1.极端的方法,清除SystemRoot变量(set SystemRoot=),这样直接用%SystemRoot%就行了。
不过这样在后面 ...

嘿,你这个办法好!厉害!
还可以在每个特殊符号比如空格前加上转义^,也能达到同样的效果

点评

空格前加转移符貌似不行,我试过“^”和“\”都不行。  详情 回复 发表于 2017-2-17 23:18
回复

使用道具 举报

发表于 2017-2-17 20:21:40 | 显示全部楼层
  1. reg add hkcc\test /ve /d ""%windir"%\system 32" /f
复制代码

点评

谢谢回复,原来百分号前一个引号就可以了,后面不用也可以。  详情 回复 发表于 2017-2-17 23:21
回复

使用道具 举报

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


谢谢,你这个写法有效,但是“"”要在“\”前面,^%SystemRoot^%"\a b"
另外我试了一下,还可以这样写,""%"SystemRoot"%"\a b"
       
回复

使用道具 举报

 楼主| 发表于 2017-2-17 23:18:41 | 显示全部楼层
1400700226 发表于 2017-2-17 18:39
嘿,你这个办法好!厉害!
还可以在每个特殊符号比如空格前加上转义^,也能达到同样的效果

空格前加转移符貌似不行,我试过“^”和“\”都不行。

点评

很抱歉我没有亲自测试就发上来了。还真是不行。 看来还是 不知 友经验丰富啊 。 在每一个特殊符号两端加引号就可以了  详情 回复 发表于 2017-2-17 23:44
回复

使用道具 举报

 楼主| 发表于 2017-2-17 23:21:59 | 显示全部楼层

谢谢回复,原来百分号前一个引号就可以了,后面不用也可以。
回复

使用道具 举报

发表于 2017-2-17 23:44:09 | 显示全部楼层
moran 发表于 2017-2-17 23:18
空格前加转移符貌似不行,我试过“^”和“\”都不行。

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

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

在每一个特殊符号两端加引号就可以了
回复

使用道具 举报

发表于 2017-2-19 23:00:15 | 显示全部楼层
^%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
回复

使用道具 举报

发表于 2017-2-26 17:57:46 | 显示全部楼层
顶一个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-28 23:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表