我自动化RSA软令牌转换并将转换字符串传递给Outlook。我意识到我不能使用批处理命令行将字符串转换为URL,但这不是我的问题。我的问题是将讨厌的等号转换为它的URL编码等价物“%3D”。具有延迟变量扩展的批处理文件 - URL编码 - 等号 - RSA令牌转换器
@echo off
setlocal enableDelayedExpansion
set /p fname=Enter the Filename:
set /p pss=Enter the encryption pass:
IF NOT EXIST "%fname%".sdtid (
echo File Not Found! Closing...
PING 1.1.1.1 -n 4 >NUL
exit
)
echo File Found! starting process...
REM tokenconverter %fname%.sdtid -iphone >> temp_batch.txt
tokenconverter %fname%.sdtid -p %pss% -iphone >> temp_batch.txt
set /p result= < temp_batch.txt
DEL temp_batch.txt
REM %result% | clip
set "stringclean1=!result:?=%%3F!"
set "stringclean2=!stringclean1::=%%3A!"
set "stringclean3=!stringclean2:/=%%2F!"
下面一行未能编码等号:但是等号仍然未编码
set "stringclean4=!stringclean3:=^=%%3D!"
set "stringclean4=!stringclean3:=%=%%3D!"
:
set "stringclean4=!stringclean3:==%%3D!"
我试过。
echo Piping over to outlook..
REM passing stringclean3 since stringclean4 no worky.
pushd "C:\Program Files\Microsoft Office\Office12"
outlook.exe /c ipm.note /m "&subject=TEsT&body=%stringclean3%"
使用延迟变量扩展对等号进行URL编码的正确方法是什么?
任何帮助表示赞赏。提前致谢。
+1有效的,但我敢肯定,这将是一个批处理+的JScript/VBScript的混合解决方案一个良好的事业。正则表达式替换可能比字符逐字检查和替换更有效。你知道你想。 :) – rojo 2013-03-07 03:02:05
@rojo - 是的,我几乎扔了那个解决方案。但更好的是使用encodeURIComponent()来处理编码的所有方面的JScript解决方案(可能是混合JScript/Batch)。 – dbenham 2013-03-07 03:11:35