我的批处理文件有点问题
@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set LOOKUP=0123456789abcdef &set HEXSTR=
set MAC_B1=03
set MAC_B2=5D
set MAC_B3=00
set MAC_B4=00
set MAC_B5=00
set MAC_B6=00
set my_file=runningno.txt
set runningno=128
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set LOOKUP=0123456789abcdef &set /a HEXSTR=
set /a A=%runningno%
:loop
set /a B=!A! %% 16 & set /a A=!A! / 16
set HEXSTR=!LOOKUP:~%B%,1!%HEXSTR%
if %A% GTR 0 goto :loop
if %runningno% LEQ 255 (
set /a MAC_B6 = %HEXSTR%
)
ECHO MAC address:%MAC_B1%-%MAC_B2%-%MAC_B3%-%MAC_B4%-%MAC_B5%-%MAC_B6%如果我在没有"abcdef“的情况下以十六进制运行,输出就会很好。
03-5D-00-00-00-80在另一种情况下,即设置为runningno=255,输出应该是03-5D-00-00-00-FF,但是是
03-5D-00-00-00-0请帮帮忙
发布于 2015-07-10 08:57:17
@echo off
setlocal enableextensions enabledelayedexpansion
set "mac_b1=03"
set "mac_b2=5d"
set "mac_b3=00"
set "mac_b4=00"
set "mac_b5=00"
set "mac_b6=00"
set "runningno=128"
set "lookup=0123456789abcdef"
set /a "high=(runningno & 255) >> 4", "low=runningno & 15"
set "mac_b6=!lookup:~%high%,1!!lookup:~%low%,1!"
echo %mac_b1%-%mac_b2%-%mac_b3%-%mac_b4%-%mac_b5%-%mac_b6%编辑的看起来runningno中的值会增加,
@echo off
setlocal enableextensions enabledelayedexpansion
set "mac_b1=03"
set "mac_b2=5d"
set "mac_b3=00"
set "mac_b4=00"
set "mac_b5=00"
set "mac_b6=00"
set "runningno=1458796"
set "lookup=0123456789abcdef"
set "value=%runningno%"
for /l %%a in (6, -1, 3) do (
set /a "high=(value & 255) >> 4", "low=value & 15", "value>>=8"
for %%H in (!high!) do for %%L in (!low!) do (
set "mac_b%%a=!lookup:~%%H,1!!lookup:~%%L,1!"
)
)
echo %mac_b1%-%mac_b2%-%mac_b3%-%mac_b4%-%mac_b5%-%mac_b6%但这有个问题。批处理文件中的算术限制在32位有符号整数。这意味着可以用此方法处理的更高的值是0x7fffff。
https://stackoverflow.com/questions/31336017
复制相似问题