gpt4 book ai didi

批处理文件中的网址解码

转载 作者:行者123 更新时间:2023-12-01 14:01:52 24 4
gpt4 key购买 nike

如何在批处理文件中“urldecode”以下字符串?我需要更改以下内容

http://www.example.com/some-page/some/link.html

对此

http://www.example.com/some-page/some/link.html

它可以在 Javascript 中使用 decodeURIComponent() 完成,但我不知道如何在 MSDOS 等中的批处理文件中完成它。

最佳答案

It can be done in Javascript with decodeURIComponent() but I've no idea how to do it in a batch file just within MSDOS etc.

不是 decodeURIComponent(),不是。尽管如此,解决方案仍然在于调用 JavaScript。您可以通过 JScript 调用 IE7 JavaScript 引擎。 See this page有关批处理 + 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!

关于批处理文件中的网址解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28221685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com