joemouth
Goto Top

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.

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

Content-ID: 259080

Url: https://administrator.de/contentid/259080

Ausgedruckt am: 20.11.2024 um 13:11 Uhr

colinardo
Lösung colinardo 07.01.2015 aktualisiert um 13:35:51 Uhr
Goto Top
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)
@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
Grüße Uwe
joemouth
joemouth 07.01.2015 um 13:36:06 Uhr
Goto Top
Perfekt, Danke Dir!