如何通过批处理向注册表项中写入包含%1的值?
解决批处理写入注册表时%1丢失的问题
这问题我碰到过好多次啦——核心原因是批处理脚本里的%是特殊字符,单个%会被批处理引擎当作参数占位符来解析。你写的%1会被当前批处理的第一个命令行参数替换(如果运行批处理时没传参数,%1就会变成空字符串),所以最终写入注册表的就只剩hello wow了。
要把%1原封不动写入注册表,你需要对%进行转义,在批处理里转义%的方式就是写两个%,也就是用%%1代替%1。
修改后的命令应该是:
reg add "HKEY_CLASSES_ROOT\*\shell\abc\command" /d "hello %%1 wow"
运行这个命令后,去注册表编辑器里查看HKEY_CLASSES_ROOT\*\shell\abc\command的默认值,就能看到完整的hello %1 wow了。之后右键点击任意文件选择这个菜单选项时,%1会被系统自动替换成选中文件的完整路径,完美实现你想要的效果~
内容的提问来源于stack exchange,提问作者Schesan Lenovoa
相关产品推荐
相关产品推荐

