2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
84
Task/Align-columns/Batch-File/align-columns.bat
Normal file
84
Task/Align-columns/Batch-File/align-columns.bat
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
mode con cols=103
|
||||
|
||||
echo Given$a$text$file$of$many$lines,$where$fields$within$a$line$ >file.txt
|
||||
echo are$delineated$by$a$single$'dollar'$character,$write$a$program! >>file.txt
|
||||
echo that$aligns$each$column$of$fields$by$ensuring$that$words$in$each$>>file.txt
|
||||
echo column$are$separated$by$at$least$one$space.>>file.txt
|
||||
echo Further,$allow$for$each$word$in$a$column$to$be$either$left$>>file.txt
|
||||
echo justified,$right$justified,$or$center$justified$within$its$column.>>file.txt
|
||||
|
||||
for /f "tokens=1-13 delims=$" %%a in ('type file.txt') do (
|
||||
call:maxlen %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m )
|
||||
echo.
|
||||
for /f "tokens=1-13 delims=$" %%a in ('type file.txt') do (
|
||||
call:align 1 %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m )
|
||||
echo.
|
||||
for /f "tokens=1-13 delims=$" %%a in ('type file.txt') do (
|
||||
call:align 2 %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m )
|
||||
echo.
|
||||
for /f "tokens=1-13 delims=$" %%a in ('type file.txt') do (
|
||||
call:align 3 %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m )
|
||||
|
||||
exit /B
|
||||
|
||||
:maxlen &::sets variables len1 to len13
|
||||
set "cnt=1"
|
||||
:loop1
|
||||
if "%1"=="" exit /b
|
||||
call:strlen %1 length
|
||||
if !len%cnt%! lss !length! set len%cnt%=!length!
|
||||
set /a cnt+=1
|
||||
shift
|
||||
goto loop1
|
||||
|
||||
:align
|
||||
setlocal
|
||||
set cnt=1
|
||||
set print=
|
||||
:loop2
|
||||
if "%2"=="" echo(%print%&endlocal & exit /b
|
||||
set /a width=len%cnt%,cnt+=1
|
||||
set arr=%2
|
||||
if %1 equ 1 call:left %width% arr
|
||||
if %1 equ 2 call:right %width% arr
|
||||
if %1 equ 3 call:center %width% arr
|
||||
set "print=%print%%arr% "
|
||||
shift /2
|
||||
goto loop2
|
||||
|
||||
:left %num% &string
|
||||
setlocal
|
||||
set "arr=!%2! "
|
||||
set arr=!arr:~0,%1!
|
||||
endlocal & set %2=%arr%
|
||||
exit /b
|
||||
|
||||
:right %num% &string
|
||||
setlocal
|
||||
set "arr= !%2!"
|
||||
set arr=!arr:~-%1!
|
||||
endlocal & set %2=%arr%
|
||||
exit /b
|
||||
|
||||
:center %num% &string
|
||||
setlocal
|
||||
set /a width=%1-1
|
||||
set arr=!%2!
|
||||
:loop3
|
||||
if "!arr:~%width%,1!"=="" set "arr=%arr% "
|
||||
if "!arr:~%width%,1!"=="" set "arr= %arr%"
|
||||
if "!arr:~%width%,1!"=="" goto loop3
|
||||
endlocal & set %2=%arr%
|
||||
exit /b
|
||||
|
||||
:strlen StrVar &RtnVar
|
||||
setlocal EnableDelayedExpansion
|
||||
set "s=#%~1"
|
||||
set "len=0"
|
||||
for %%N in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
|
||||
if "!s:~%%N,1!" neq "" set /a "len+=%%N" & set "s=!s:~%%N!"
|
||||
)
|
||||
endlocal & set %~2=%len%
|
||||
exit /b
|
||||
Loading…
Add table
Add a link
Reference in a new issue