0

为了使用我的软件电话,我注册了一个自定义 url 协议 cccx

然后将其与解析电话并将命令发送到软件电话的 .bat 文件相关联。

我使用的代码是:

set str=%1  
set str=%str:cccx:=%
set str=%str:+=00%
set str=%str:0030=%
set str=%str:-=%
set str=%str: =%

"C:\Program Files (x86)\3CXPhone\3CXPhone.exe" dial:9%str:cccx:=%

然而这还不够,一些网页发送的字符不同,我无法解析它。

例如,电话显示为 +39 02 33919999。

我收到这个作为 str="%2b39+02+33919999" 或 str="+39%2002%2033919999"

在这两种情况下,这必须变为 00390233919999

我尝试了各种方法,但似乎无法正确处理。

感谢您的任何帮助

4

1 回答 1

0

当尝试使用子字符串修改搜索替换语法时,该%字符需要自行转义,这反过来又要求使用延迟扩展执行子字符串修改。

然后,处理所呈现的案例所需要的只是简单的条件测试,以确定需要哪些搜索替换操作:

@Echo off

Set "input=%~1"

rem test cases: %2b39+02+33919999 +39%2002%2033919999
rem output: 00390233919999

Setlocal EnableDelayedExpansion

 Set "input=!input:+=!"

 If not "!input:2b=!" == "!input!" (
  Set "input=!input:%%2b=00!"
 )Else (
  Set "input=00!input:%%20=!"
 )

 Set input
 Pause

于 2021-07-29T14:11:51.267 回答