- @echo off
- setlocal EnableDelayedExpansion
- set /a length=20 & set /a width=23
- set /a max=length*width
- call :len %max% maxlength
- set /a i=1 & set /a j=1 & set /a idelta=0 & set /a jdelta=1 & set /a imax=length & set /a jmax=width & set /a count=0 & set /a imin=2 & set /a jmin=1
- :setvalue
- set /a count+=1
- call :loop temp %count% %maxlength%
- set matrix[%i%][%j%]=%temp%
- if "%idelta%,%jdelta%"=="0,1" ( if %j%==%jmax% ( set /a idelta=1 & set /a jdelta=0 & set /a jmax-=1 ))
- if "%idelta%,%jdelta%"=="1,0" ( if %i%==%imax% ( set /a idelta=0 & set /a jdelta=-1 & set /a imax-=1))
- if "%idelta%,%jdelta%"=="0,-1" ( if %j%==%jmin% ( set /a idelta=-1 & set /a jdelta=0 & set /a jmin+=1))
- if "%idelta%,%jdelta%"=="-1,0" ( if %i%==%imin% ( set /a idelta=0 & set /a jdelta=1 & set /a imin+=1))
- set /a i+=idelta & set /a j+=jdelta
- if %count% lss %max% (
- goto:setvalue
- )
- for /l %%i in (1,1,%length%) do (
- set str=!matrix[%%i][1]!
- for /l %%j in (2,1,%width%) do ( set "str=!str! !matrix[%%i][%%j]!" )
- echo !str!
- )
- exit
-
- :loop
- set number= %2
- set %1=!number:~-%3!
- goto :eof
-
- :len
- set Tempstrs=%~1 & Set Tempnum=0
- :下一位
- set Tempstr=!Tempstrs:~%Tempnum%,1!
- if defined Tempstr ( set /a Tempnum+=1 & goto :下一位 )
- set /a %~2=%Tempnum%-1
- goto :eof
复制代码
|