Wenn man z.B. Tabellen darstellen will, möchte man bspw. Zahlen rechtsbündig darstellen. Siehe buendig.zip.
Die Datei "fkt_buendig.bat" in den gleichen Ordner der .bat kopieren, die diese Funktion aufruft. Sonst muss der relative oder absolute Pfad angegeben werden.
Zum Ausführen ist die Funktion StrLength.bat erforderlich. Diese ist im Dateianhang enthalten.
REM *************************************************
REM * Name: fkt_buendig.bat *
REM * Type: Function* *
REM * Autor: Tim Pustelni *
REM * Date: 19.01.2017 *
REM *************************************************
REM * Description *
REM * Formatiert eine Zeichenkette links-, *
REM * rechtsbündig oder mittig. *
REM *************************************************
REM * Input: %1: Variablenname für Rückgabe *
REM * %2: Text *
REM * %3: Anzahl Zeichen d. Rückgabe *
REM * %4: Optional Füllzeichen *
REM * 1=rechtsbündig *
REM * 2=linksbündig (standard) *
REM * 3=mittig *
REM *************************************************
REM * Output: Text in Variable %1 mit Leerzeichen *
REM *************************************************
REM * *Anmerkung: Setlocal EnableDelayedExpansion *
REM * erforderlich *
REM *************************************************
SET strText=%~2
SET Laenge=%3
SET _Format=%4
REM Standard Linksbündig, wenn 4. var leer
IF not defined _Format SET _Format=2
CALL strLength.bat len "%strText%"
SET /A StrLength=%Laenge%-%len%
REM LEERZEICHEN
SET Fuellzeichen=
SET Fuellstr=
:StrLengthLoop
FOR /L %%N IN (1, 1, %StrLength%) DO (
SET Fuellstr=!Fuellstr!%Fuellzeichen%
SET cnt=%%N
)
IF %_Format%==1 SET %1=%Fuellstr%%strText%
IF %_Format%==2 SET %1=%strText%%Fuellstr%
REM Für mittig rechts immer gerade anzahl (rundet bei /2 autom.) und links den Rest
REM Var vordefinieren, da sonst SET in IF nicht funktioniert
REM Zusätzlich in der IF !-Zeichen für Strings notwendig
SET /A ZeiLinks=%cnt%/2
IF %_Format%==3 (
SET FueRecht=!Fuellstr:~0,%ZeiLinks%!
SET FueLinks=!Fuellstr:~%ZeiLinks%!
SET %1=!FueLinks!%strText%!FueRecht!
)
:ENDE
:EOF %1
CALL [VERZEICHNIS]fkt_buendig.bat RÜCKGABEVARIABLENNAME TEXT TEXTLÄNGE [FORMAT]
TEXT:
TEXTLÄNGE: Anzahl der Zeichen, auf die aufgefüllt werden soll.
[FORMAT] ist optional. Ohne Angabe wird linksbündig formatiert. Werte: 1=rechtsbündig, 2=linksbündig, 3=mittig
@echo off & setlocal
Setlocal EnableDelayedExpansion
SET Zeile1=abcd
SET Zeile2=1234567
SET Zeile3=
SET Zeile4=efd hijk
SET Zeile5=89
REM Vorher könnte noch mittels der Funktion "StrLength.bat" die höchste Länge ermittelt werden
REM für das Beispiel setzen wir die Länge auf 12 (Anz. Zeichen von "UEBERSCHRIFT")
SET BR=12
REM Hier wird der alte Wert von %Zeile#% übergeben und wieder in Zeile# überschrieben
CALL fkt_buendig.bat Zeile1 "%Zeile1%" %BR% 3
CALL fkt_buendig.bat Zeile2 "%Zeile2%" %BR% 3
CALL fkt_buendig.bat Zeile3 "%Zeile3%" %BR% 3
CALL fkt_buendig.bat Zeile4 "%Zeile4%" %BR% 3
CALL fkt_buendig.bat Zeile5 "%Zeile5%" %BR% 3
ECHO ^| Ueberschrift ^|
ECHO ^+--------------^+
ECHO ^| %Zeile1% ^|
ECHO ^| %Zeile2% ^|
ECHO ^| %Zeile3% ^|
ECHO ^| %Zeile4% ^|
ECHO ^| %Zeile5% ^|
PAUSE