2013-07-17 7 views
5

Ich habe eine Batch-Datei, die Variablen variabler Länge dauert. Zum Beispiel ist die Ausgabe wie folgt:Batch-Ausgabe in Spalten ausrichten

%name% - %size% - %percentage% - %percentMIN% - %percentMAX% 
%name% - %size% - %percentage% - %percentMIN% - %percentMAX% 
%name% - %size% - %percentage% - %percentMIN% - %percentMAX% 
%name% - %size% - %percentage% - %percentMIN% - %percentMAX% 
%name% - %size% - %percentage% - %percentMIN% - %percentMAX% 

Da die ersten 2 Spalten in der Länge variieren, sieht die Ausgabe über die ganze Stelle. Gibt es in einer Stapeldatei die Möglichkeit, die Spalten auszurichten? Ich habe etwas recherchiert und es sieht so aus, als ob es einen Weg gibt, den Anfangstreffer mit Leerzeichen zu füllen. Aber das scheint nicht zu funktionieren? Gibt es vielleicht einen anderen Weg?

+1

ok, die einzige Möglichkeit, die gewünschte Reaktion unter Verwendung von Batch und eine TXT-Datei erreichen können, ist indem Sie eine maximale Länge für den Namen und die Anzahl der Ziffern in der Größe festlegen. (Eine Zahl wie 15 scheint günstig). Dann müssten Sie die Lösung in dieser Frage verwenden: [link] (http://stackoverflow.com/questions/5837418/how-do-you-get-the-string-length-in-a-batch-file) um die Länge jedes '% name%' und '% size%' zu finden und dann eine Variable zu erstellen, die diese Leerzeichen sowie den Namen oder die Größe berücksichtigt. Auf diese Weise würde jeder in der Textdatei die gleiche Länge haben. Die ultimative Lösung wäre: – Monacraft

+1

Suchen Sie die Länge aller '% name% 'und'% size% 'Variablen, bestimmen Sie, welche die größte für beide ist, und ersetzen Sie die maximale Anzahl (mit 15) das der Größe der größten Länge Name und Größe, und auf diese Weise würde Ihre "Zellauffüllung" so wenig Platz wie möglich einnehmen, und obwohl dies viel Code zu Ihrem Programm hinzufügen würde, würde es besser und in der Lage zu machen für mehr Dinge verwendet werden (nach Anpassung) – Monacraft

Antwort

4
@ECHO OFF 
SETLOCAL 
SET "spaces=        " 
SET "somethingelse=Some other data" 
SET "name=abc" 
SET /a size=123 
CALL :formatout 
SET "name=abcdefghijkl" 
SET /a size=12345678 
CALL :formatout 
SET "name=a" 
SET /a size=3 
CALL :formatout 

GOTO :EOF 

:formatout 
CALL :padright name 18 
CALL :padleft size 13 
ECHO +%name%+%size%+%somethingelse% 
GOTO :eof 

:padright 
CALL SET padded=%%%1%%%spaces% 
CALL SET %1=%%padded:~0,%2%% 
GOTO :eof 

:padleft 
CALL SET padded=%spaces%%%%1%% 
CALL SET %1=%%padded:~-%2%% 
GOTO :eof 

Diese Demo sollten Sie auf die richtige Spur gesetzt ...

Ausgang ist

+abc    +   123+Some other data 
+abcdefghijkl  +  12345678+Some other data 
+a     +   3+Some other data 
Verwandte Themen