Board logo

标题: [文本处理] 批处理获取的参数,空格变成20% [打印本页]

作者: xiaodevps    时间: 2019-3-11 17:27     标题: 批处理获取的参数,空格变成20%

本帖最后由 xiaodevps 于 2019-3-11 17:39 编辑

代码

@echo on
set m=%1%
ping %m%
pause
exit

其中引用的m如果有空格的话,在某些情况下会显示 ping%20www.163.com   ,正常的情况应该是  ping www.163.com ,但是某些情况下是 ping%20www.163.com  中间的空格变成了%20,请问如何解决呢?
作者: Batcher    时间: 2019-3-11 17:41

  1. set m=%~1
  2. ping %m: =%
  3. pause
复制代码

作者: xiaodevps    时间: 2019-3-11 20:29

谢谢,但是还是不行。
作者: Batcher    时间: 2019-3-11 21:57

回复 3# xiaodevps


    请给个完整的测试用例和测试结果,我试试。
作者: xiaodevps    时间: 2019-3-12 10:13

本帖最后由 xiaodevps 于 2019-3-12 10:15 编辑
回复  xiaodevps


    请给个完整的测试用例和测试结果,我试试。
Batcher 发表于 2019-3-11 21:57



先导入注册表值

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\alert]
@="URL:Alert Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\alert\DefaultIcon]
@="cmd,1"

[HKEY_CLASSES_ROOT\alert\shell]

[HKEY_CLASSES_ROOT\alert\shell\open]

[HKEY_CLASSES_ROOT\alert\shell\open\command]
@="cmd /c set m=%1 & call set m=%%m:alert:=%% & call \"d:\\123.bat\" %%m%%"




然后自己写一个html代码

<a href="alert://163.com -t" />ping test  


使用谷歌浏览器与EDGE打开html获得的参数都带有  %20
作者: zaqmlp    时间: 2019-3-12 11:04

  1. @echo on
  2. title 代码可用,扫码头像,感谢赞助;有什么问题,可加QQ956535081及时沟通
  3. set m=%1
  4. setlocal enabledelayedexpansion
  5. set m=!m:%%20= !
  6. ping !m:/=!
  7. pause
  8. exit
复制代码

作者: xiaodevps    时间: 2019-3-12 11:21

zaqmlp 发表于 2019-3-12 11:04



   

谢谢,谷歌浏览器可用,但是edge与IE用不了。
作者: zaqmlp    时间: 2019-3-12 12:01

用其他字符代替空格,bat里再清除就是了
作者: xiaodevps    时间: 2019-3-12 12:14

本帖最后由 xiaodevps 于 2019-3-12 12:16 编辑

还有个问题,例如 ping  http://163.com -t    变成了  ping  http:163.com -t

中间的 // 被删除了,该如何保留呢?
作者: shousui432    时间: 2019-3-15 17:14

学习了。。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2