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-Key: 259080

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

Printed on: April 19, 2024 at 15:04 o'clock

Member: colinardo
Solution colinardo Jan 07, 2015 updated at 12:35:51 (UTC)
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
Member: joemouth
joemouth Jan 07, 2015 at 12:36:06 (UTC)
Goto Top
Perfekt, Danke Dir!