bat+js混编 10进制转16进制

前言

我们知道,bat是没有进制转换的函数的,简单的二进制和十进制互转,我想可以用算法去制作。但对于带字母的16进制,哪怕能写出相应的算法,也属实费力费时。那么我们可以调用强大的WSH,让js去转换成16进制,然后传回bat。强大的js一行代码就搞定了,便于文件携带,采用了bat和js混编,无需再多创建一个js文件去调用。

代码

1
2
3
4
5
6
7
8
9
/*&cls&@echo off
set num=12
for /f %%a in ('cscript -nologo -e:jscript "%~f0" %num%') do (
echo %%a
)
timeout 2 1>nul
exit /b
*/
WSH.Echo(Number(WSH.Arguments(0)).toString(16))

保存为bat文件运行,输出:

1
c

知识点

WSH.Arguments(0)变量从bat传递过来,要加Number转换成数值型,否则js块无法转换进制。

1
WSH.Echo(Number(WSH.Arguments(0)).toString(16))

参考文献

使用JavaScript进行进制转换将字符串转换为十进制