Batch: text mit fester Länge am Bildschirm ausgeben
Hallo Freunde der gepflegten Batchprogrammierung,
ich möchte Text aus SET Variablen mit fester Länge per echo ausgeben.
Ziel ist es, so etwas wie eine Tabelle auf dem Bildschirm anzuzeigen.
%I:~n,m% kenne ich, um Teilstrings zu ermitteln.
Ergibt eine Ausgabe mit maximal 10 Zeichen, nur wenn der Text kleiner als 10 Zeichen lang ist, wird auch weniger ausgegeben.
Wie erreiche ich in meinem Beispiel, dass der Text immer 10 Zeichen lang ist, also ggfs. mit Blanks aufgefüllt wird o.ä.?
Vielen Dank für Eure Hilfe
ich möchte Text aus SET Variablen mit fester Länge per echo ausgeben.
Ziel ist es, so etwas wie eine Tabelle auf dem Bildschirm anzuzeigen.
%I:~n,m% kenne ich, um Teilstrings zu ermitteln.
echo %I:~0,10%
Ergibt eine Ausgabe mit maximal 10 Zeichen, nur wenn der Text kleiner als 10 Zeichen lang ist, wird auch weniger ausgegeben.
Wie erreiche ich in meinem Beispiel, dass der Text immer 10 Zeichen lang ist, also ggfs. mit Blanks aufgefüllt wird o.ä.?
Vielen Dank für Eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 259080
Url: https://administrator.de/contentid/259080
Ausgedruckt am: 20.11.2024 um 13:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo joemouth,
z.B. so (die Leerzeichen sind, damit sie in der Demo sichtbar sind, durch Punkte ersetzt, das kannst du in Zeile 22 ganz am Ende anpassen)
Grüße Uwe
z.B. so (die Leerzeichen sind, damit sie in der Demo sichtbar sind, durch Punkte ersetzt, das kannst du in Zeile 22 ganz am Ende anpassen)
@echo off & setlocal enabledelayedexpansion
set fixedlength=10
set "var1=Test"
set "var2=1234567890123"
set "var3=12345678"
call :makefixed var1
call :makefixed var2
call :makefixed var3
echo %var1%
echo %var2%
echo %var3%
goto :eof
:makefixed
set padd=
call :strLength strLen "!%1!"
if %strLen% GTR %fixedlength% (
set "%1=!%1:~0,%fixedlength%!"
) else (
set /a spaces=%fixedlength%-!strLen!
for /l %%a in (1 1 !spaces!) do set "padd=!padd!."
set "%1=!%1!!padd!"
)
goto :eof
:strLength
set "#=%~2"
set length=0
:stringLengthLoop
if defined # (set #=%#:~1%&set /A length += 1&goto stringLengthLoop)
set "%~1=%length%"
goto :eof