Board logo

标题: BatProject 0.5.0 算号器。。 [打印本页]

作者: bxbian951122     时间: 2010-2-4 16:30    标题: BatProject 0.5.0 算号器。。

PS:第一届“BP杯”批处理大赛即将开始。敬请期待。。

-----------------------------------------------------------------------------

BatProject 0.5.0 下载地址。。
http://www.bathome.net/thread-7052-1-1.html

算号器。。
@echo off
setlocal enabledelayedexpansion
set p0=48&set p1=49&set p2=50&set p3=51&set p4=52&set p5=53
set p6=54&set p7=55&set p8=56&set p9=57&set pA=65&set pB=66
set pC=67&set pD=68&set pE=69&set pF=70
:back
cls
echo Neoix
echo By Rijn
echo.
set /p 源数=请输入序列号=
for /f "skip=1 delims=:" %%i in ('^(echo "%源数%"^&echo.^)^|findstr /o ".*"') do set/a l=%%i-5
if not "%l%"=="8" (echo 字符必须满足8位&goto back)
set scanf=%源数%
set sed=85930483
set regcode=0
:loop
call set str1=%scanf:~,1%
call set numtemp=%%p%str1%%%
set /a regcode=%regcode%+%sed%-(1024%%(%numtemp%))
set "scanf=%scanf:~1%"
if defined scanf goto loop
set 源数=%regcode%
set /a 源数=%源数% || goto :eof
:dosomething
set /a 余数 = %源数% %% 16
set /a 源数 /= 16
call :转换 %余数%
set 余数=%ret%
set 计算结果=%余数%%计算结果%
if %源数% lss 16 goto end
goto dosomething
:转换
set ret=
if "%1" == "10" set ret=A
if "%1" == "11" set ret=B
if "%1" == "12" set ret=C
if "%1" == "13" set ret=D
if "%1" == "14" set ret=E
if "%1" == "15" set ret=F
if %1 lss 10 set ret=%1
goto :eof