以批处理文件和URL编码转义Ampersand

时间:2015-09-10 02:50:46

标签: batch-file cmd tableau tableau-server

网址将%26解析为&在tabcmd调用并将其设置为错误的URL

我的批处理文件如下:

@echo off
setlocal enabledelayedexpansion
set str=%1
set str=!str:^&=%%26!
set var1=!str!
set var1=!var1: =%%20!

set var2=!var1!
set var2=!var2:,=!

tabcmd get "views/tableau_workbook/first_page.png?status=O&category=ALL&cust=!var1!&:size=1715,893" -f "D:\myfolder\!var2!\!var2!_1.png" --no-certche


pause

例如: 我将参数“A& B”传递给批处理文件。 在调用URL之前,var1变量具有以下值: A%20%26%20B,这是预期的。

一旦调用了网址,网址就会被解析为 A%20&%20B ,而是我试图获得 A%20%26%20B

我甚至尝试将&替换为%25%26,以便在执行时将其设为%26,但是提示帮助。

有人可以帮忙解决这个问题。谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,如果你没有找到任何其他解决方案,你总是可以通过JScript混合方式借用JavaScript的encodeURIComponent字符串方法。用.bat扩展名保存它并给它一个镜头。

@if (@CodeSection == @Batch) @then

@echo off
setlocal enabledelayedexpansion

for /f "delims=" %%I in ('cscript /nologo /e:Jscript "%~f0" "%~1"') do set "%%I"

set var2=!var1:%%2C=!

tabcmd get "views/tableau_workbook/first_page.png?status=O&category=ALL&cust=!var1!&:size=1715,893" -f "D:\myfolder\!var2!\!var2!_1.png" --no-certche

pause
goto :EOF

@end // end batch / begin JScript hybrid chimera
WSH.Echo('var1=' + encodeURIComponent(WSH.Arguments(0)));