批处理文件中的URL解码
如何在批处理文件中“urldecode”以下字符串?我需要更改以下内容批处理文件中的URL解码,url,batch-file,urldecode,Url,Batch File,Urldecode,如何在批处理文件中“urldecode”以下字符串?我需要更改以下内容 http://www.example.com/some-page/some/link.html 对此 http://www.example.com/some-page/some/link.html 它可以用Javascript和decodeURIComponent()完成,但我不知道如何在MSDOS中的批处理文件中
http://www.example.com/some-page/some/link.html
对此
http://www.example.com/some-page/some/link.html
它可以用Javascript和decodeURIComponent()完成,但我不知道如何在MSDOS中的批处理文件中完成
@if (@x)==(@y) @end /***** jscript comment ******
@echo off
set "url=http://www.example.com/some-page/some/link.html"
cscript //E:JScript //nologo "%~f0" "%url%"
exit /b 0
@if (@x)==(@y) @end ****** end comment *********/
var args=WScript.Arguments;
//WScript.Echo(args.Item(0));
WScript.Echo(decodeURIComponent(args.Item(0)));
虽然这肯定不是uri编码的url
它可以用Javascript和decodeURIComponent()完成,但我不知道如何在MSDOS中的批处理文件中完成
@if (@x)==(@y) @end /***** jscript comment ******
@echo off
set "url=http://www.example.com/some-page/some/link.html"
cscript //E:JScript //nologo "%~f0" "%url%"
exit /b 0
@if (@x)==(@y) @end ****** end comment *********/
var args=WScript.Arguments;
//WScript.Echo(args.Item(0));
WScript.Echo(decodeURIComponent(args.Item(0)));
不适用于decodeURIComponent()
,不适用。尽管如此,解决方案仍然在于调用JavaScript。您可以通过JScript调用IE7JavaScript引擎。有关batch+JScript混合脚本的更多示例
没有内置的JavaScript函数将HTML实体(ÿ;
字符)转换回纯文本,但是您自己的转换并不困难
@如果(@code节==@Batch)@那么
::批量部分
@回音
setlocal
设置“url=http:;/;/;www.example.com/;some page/;some/;link.html”
cscript/nologo/e:JScript“%~f0”“%url%”
后藤:EOF
@结束
//JScript部分
功能实体(什么){
返回what.replace(/([0-9a-f]{2});/ig,函数(m,$1){
返回字符串.fromCharCode(parseInt($1,16));
});
}
Echo(解码实体(WSH.Arguments(0));
作为一个学术练习,这里有一个将HTML字符实体转换为ASCII的纯批处理方法。它比JScript混合版稍微慢一点,并且可能会处理包含感叹号的字符串
@echo关闭
延迟扩展
设置“url=http:;/;/;www.example.com/;some page/;some/;link.html”
设置“url=%url:=;0x%”
:开始
对于(%url%)中的%%I,请执行以下操作(
设置“chunk=%%~I”
如果“!chunk:~0,2!”==“0x”如果“!chunk:~4,1!”==”(
对于/f“delims=”%%x英寸(
'forfiles/m“%~nx0”/c”cmd/c echo(%%~I”'
)设置“url=!url:;%%I;=%%~x!”
开始
)
)
)
回声!网址!
这可以在纯批量生产中实现
@echo off
setlocal EnableDelayedExpansion
set "input=http://www.example.com/some-page/some/link.html"
rem Define the equivalences
for %%a in ("#x3a=:" "#x2f=/") do (
for /F "tokens=1,2 delims==" %%b in (%%a) do set "replace[%%b]=%%c"
)
echo Input = "%input%"
set "input=%input:&=\%"
set "output="
for %%a in (%input%) do (
for /F "tokens=1,2 delims=\" %%b in ("%%a") do (
if "%%c" neq "" (
set "output=!output!%%b!replace[%%c]!"
) else (
set "term=%%a"
if "!term:~0,1!" equ "\" (
set "output=!output!!replace[%%b]!"
) else (
set "output=!output!%%b"
)
)
)
)
echo Output = "%output%"
我替换了
http://w3schools.com/my test.asp?name=ståle&car=saab
以下W3Schools站点中的字符串,以及我要解码的字符串。它成功地解码了它,所以我认为这是一个Javascript方法@user2146441decodeURI
和类似的解码百分比代码--http%3A%2F%2F
和类似的代码。可能是您的浏览器或后端为您翻译了实体。耸耸肩如果我在JScript中运行字符串decodeURI
,它的结束与开始完全一样。没有要解码的百分比代码。什么。。。你怎么。。。嗯!这里没有任何计算,没有十六进制到dec到charcode的转换,只是有很多代码可以直接从:代码>到:
和/代码>至/
。你可以只做set“input=%input::;=:%”
和set“input=%input:/;=/%”
一天,你知道的。:)挑战:刮削NN编码>并将NN转换为它所表示的ASCII字符。