加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – CMD / Batch / Registry – 字符串替换不按预期工作

发布时间:2020-12-14 01:57:04 所属栏目:Windows 来源:网络整理
导读:我正在尝试替换 Windows注册表项的一行代码中的子字符串 [HKEY_CLASSES_ROOTPINGshellopencommand]@="C:WindowsSystem32ping.exe %1 -t" 场景和背景: 上下文是一个自定义URL协议,它将打开一个shell,连续ping到特定的ip,我想从uri中删除协议ping:
我正在尝试替换 Windows注册表项的一行代码中的子字符串

[HKEY_CLASSES_ROOTPINGshellopencommand]
@="C:WindowsSystem32ping.exe %1 -t"

场景和背景:

上下文是一个自定义URL协议,它将打开一个shell,连续ping到特定的ip,我想从uri中删除协议ping://作为%1传递.
确定我可以使用批处理文件,但我更喜欢在注册表中将它全部放在一行中

我尝试过的:

到目前为止,我已经尝试用&添加一个命令列表.设置var然后回显它..

尝试过call set remove = ping://& call set mynewvar =%1:%remove =%& ping.exe%mynewvar%-t

我尝试使用%%扩展变量几次

基本上我一直在得到奇怪的结果或替换根本不工作

不确定我做错了什么?输入这个,我开始认为我忽略了它在字符串var @ =“……”中的事实.

谢谢

注册表项

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOTPING]
@="url:ping protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOTPINGshell]

[HKEY_CLASSES_ROOTPINGshellopen]

[HKEY_CLASSES_ROOTPINGshellopencommand]
@="cmd /k set var=%1 & call set var=%%var:ping://=%% & ping.exe %var% -t"

浏览器输入网址
平://8.8.8.8

cmd提示输出
Ping请求找不到主机ping://8.8.8.8/ar.请检查名称,然后重试.

我注意到ip来自%var%之后,它出现了它使用%v而不是%var

解决方法

得到它..%v实际上

%v – 对于没有暗示全部的动词.如果没有传递参数,那么这是工作目录.

从this answer得到了

工作代码

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOTPING]
@="url:ping protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOTPINGshell]

[HKEY_CLASSES_ROOTPINGshellopen]

[HKEY_CLASSES_ROOTPINGshellopencommand]
@="cmd /k set myvar=%1 & call set myvar=%%myvar:ping:=%% & call set myvar=%%myvar:/=%% & call ping.exe %%myvar%% -t"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读