2013-07-17 8 views
5

मेरे पास एक बैच फ़ाइल है जो परिवर्तनीय लंबाई के चर लेती है। उदाहरण के लिए आउटपुट इस तरह है:स्तंभों में बैच आउटपुट को संरेखित करना

%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% 

क्योंकि पहले 2 कॉलम लंबाई में भिन्न होते हैं, आउटपुट सभी जगहों पर दिखता है। कॉलम संरेखित करने के लिए बैच फ़ाइल में कोई तरीका है? मैंने कुछ शोध किया है और ऐसा लगता है कि रिक्त स्थान वाले पात्रों के प्रारंभिक समूह को पैड करके इसे करने का कोई तरीका है? लेकिन ऐसा लगता है कि काम नहीं कर रहा है? क्या कोई और तरीका है?

+1

ठीक है, एक ही रास्ता आप बैच का उपयोग करके वांछित प्रतिक्रिया प्राप्त कर सकते हैं और एक .txt फ़ाइल है नाम के लिए अधिकतम लंबाई और आकार में अंकों की संख्या निर्धारित करके। (15 की तरह एक संख्या अनुकूल लगती है)। फिर आपको इस प्रश्न में soloution का उपयोग करना होगा: [लिंक] (http://stackoverflow.com/questions/5837418/how-do-you-get-the-string-length-in-a-batch-file) प्रत्येक '% नाम%' और '% आकार%' की लंबाई खोजने के लिए और फिर एक var बनाएं जो इन रिक्त स्थानों के साथ-साथ नाम या आकार के लिए भी जिम्मेदार होगा। इस तरह प्रत्येक पाठ फ़ाइल में एक ही लंबाई होगी। परम soloution होगा: – Monacraft

+1

सभी '% नाम%' और '% आकार%' चर की लंबाई पाएं, यह निर्धारित करें कि दोनों के लिए सबसे बड़ा कौन सा है, और अधिकतम संख्या सेट (15 होने का सुझाव दें) को प्रतिस्थापित करें सबसे बड़ा लंबाई नाम और आकार के आकार की, और इस तरह, आपका "सेल पैडिंग" जितना संभव हो उतना छोटा स्थान लेगा, और हालांकि यह आपके प्रोग्राम में बहुत सारे कोड जोड़ देगा, इससे बेहतर और सक्षम हो जाएगा अधिक चीजों के लिए इस्तेमाल किया जाना चाहिए (अनुकूलन के बाद) – Monacraft

उत्तर

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 

इस डेमो सही रास्ते पर आप स्थापित करना चाहिए ...

उत्पादन

+abc    +   123+Some other data 
+abcdefghijkl  +  12345678+Some other data 
+a     +   3+Some other data 
संबंधित मुद्दे