我刚刚编写了一个快速批处理文件,可以将某个目录输入上传到手机配置中,而无需用户手动手动执行。
@echo off
set /p title= Contact name?
set /p number= Contact phone number?
start "" http://admin:password@172.31.2.214/!mod%%20cmd%%20FLASHDIR0%%20add-item%%20104%%20(cn=%title%)(e164=%number%)(h323=%title%)
批处理文件获取变量,然后我将它们添加到start命令中。这样的脚本工作,它登录到手机界面,然后上传目录输入。
如果我输入John作为标题,输入123456作为数字,我会使用此链接http://172.31.2.214/!mod%20cmd%20FLASHDIR0%20add-item%20104%20(cn=John)(e164=123456)(h323=John)获得一个新的浏览器窗口。
批处理文件有效,用户可以使用此批处理输入目录条目。但问题是大多数标题都包含多个单词。问题是,如果我在第一个变量下输入John Smith,则链接如下所示: 管理员:!password@172.31.2.214/ MOD%20cmd%20FLASHDIR0%20add项%20104 20%(CN =约翰
第二部分(在标题变量中的空格之后)被删除。如何强制批处理文件发送带有%20而不是空格字符的URL?
答案 0 :(得分:1)
在网址编码中,空格被表示为+
:123 456
变为123+456
(In a URL, should spaces be encoded using %20 or +?)。所以你需要的是替换给定字符串中的空格并使用+
代替。这就是你如何做到的:
@echo off
set /p title= Contact name?
set /p number= Contact phone number?
set urltitle=%title: =+%
set urlnumber=%number: =+%
start "" http://admin:password@172.31.2.214/!mod%%20cmd%%20FLASHDIR0%%20add-item%%20104%%20(cn=%urltitle%)(e164=%urlnumber%)(h323=%title%)
如果您想将空格编码为%20
,请输入以下代码:
@echo off
setlocal EnableDelayedExpansion
set /p title= Contact name?
set /p number= Contact phone number?
set urltitle=!title: =%%20!
set urlnumber=!number: =%%20!
start "" http://admin:password@172.31.2.214/!mod%%20cmd%%20FLASHDIR0%%20add-item%%20104%%20(cn=%urltitle%)(e164=%urlnumber%)(h323=%title%)
答案 1 :(得分:1)
您可以使用%variable:old=new%
将变量中的另一个字符串替换为字符串。这样,要用其他内容替换空格,您可以使用%variable: =somethingelse%
。
但是,问题是您尝试使用%20
替换,其中包含%符号。这将被解释为变量名称。如果您真的想使用%20
而不是+
,则必须使用delayed expansion来解除百分号,如here所述:
@echo off
setlocal EnableDelayedExpansion
set /p title= Contact name?
set /p number= Contact phone number?
set urltitle=!title: =%20!
set urlnumber=!number: =%20!
setlocal DisableDelayedExpansion
start "" http://admin:password@172.31.2.214/!mod%%20cmd%%20FLASHDIR0%%20add-item%%20104%%20(cn=%urltitle%)(e164=%urlnumber%)(h323=%urltitle%)