如何在批处理文件中“urldecode”以下字符串?我需要更改以下内容
http://www.example.com/some-page/some/link.html
to this
http://www.example.com/some-page/some/link.html
它可以在Javascript中使用decodeURIComponent()完成,但我不知道如何在MSDOS等的批处理文件中完成它。
它可以在Javascript中使用decodeURIComponent()完成,但我不知道如何在MSDOS等的批处理文件中完成它。
不与decodeURIComponent()
, 不。尽管如此,解决方案仍然在于调用 JavaScript。您可以通过 JScript 调用 IE7 JavaScript 引擎。请参阅此页 https://gist.github.com/davidruhmann/5199433有关批处理 + JScript 混合脚本的更多示例。
没有内置的 JavaScript 函数来转换 HTML 实体(ÿ
字符)回到纯文本,但推出自己的文本并不太困难。
@if (@CodeSection == @Batch) @then
:: batch portion
@echo off
setlocal
set "url=http://www.example.com/some-page/some/link.html"
cscript /nologo /e:JScript "%~f0" "%url%"
goto :EOF
@end
// JScript portion
function decodeEntities(what) {
return what.replace(/&#x([0-9a-f]{2});/ig, function(m, $1) {
return String.fromCharCode(parseInt($1, 16));
});
}
WSH.Echo(decodeEntities(WSH.Arguments(0)));
作为一个学术练习,这里有一个将 HTML 字符实体转换为 ASCII 的纯批处理方法。它比 JScript 混合体稍慢,并且可能会错误地处理包含感叹号的字符串。
@echo off
setlocal enabledelayedexpansion
set "url=http://www.example.com/some-page/some/link.html"
set "url=%url:&#x=;0x%"
:begin
for %%I in (%url%) do (
set "chunk=%%~I"
if "!chunk:~0,2!"=="0x" if "!chunk:~4,1!"=="" (
for /f "delims=" %%x in (
'forfiles /m "%~nx0" /c "cmd /c echo(%%~I"'
) do set "url=!url:;%%I;=%%~x!"
goto begin
)
)
)
echo !url!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)