0

So for a batch game i am making i got this big wall of text.

echoc -g "%p1%%p2%%p3%%p4%%p5%%p6%%p7%%p8%%p9%%p10%%p11%%p12%%p13%%p14%%p15%%p16%%p17%%p18%%p19%%p20%%p21%%p22%%p23% I" -n
echoc -g "%p24%%p25%%p26%%p27%%p28%%p29%%p30%%p31%%p32%%p33%%p34%%p35%%p36%%p37%%p38%%p39%%p40%%p41%%p42%%p43%%p44%%p45%%p46% I" -n
echoc -g "%p47%%p48%%p49%%p50%%p51%%p52%%p53%%p54%%p55%%p56%%p57%%p58%%p59%%p60%%p61%%p62%%p63%%p64%%p65%%p66%%p67%%p68%%p69% I" -n
echoc -g "%p70%%p71%%p72%%p73%%p74%%p75%%p76%%p77%%p78%%p79%%p80%%p81%%p82%%p83%%p84%%p85%%p86%%p87%%p88%%p89%%p90%%p91%%p92% I" -n
echoc -g "%p93%%p94%%p95%%p96%%p97%%p98%%p99%%p100%%p101%%p102%%p103%%p104%%p105%%p106%%p107%%p108%%p109%%p110%%p111%%p112%%p113%%p114%%p115% I" -n
echoc -g "%p116%%p117%%p118%%p119%%p120%%p121%%p122%%p123%%p124%%p125%%p126%%p127%%p128%%p129%%p130%%p131%%p132%%p133%%p134%%p135%%p136%%p137%%p138% I" -n
echoc -g "%p139%%p140%%p141%%p142%%p143%%p144%%p145%%p146%%p147%%p148%%p149%%p150%%p151%%p152%%p153%%p154%%p155%%p156%%p157%%p158%%p159%%p160%%p161% I" -n
echoc -g "%p162%%p163%%p164%%p165%%p166%%p167%%p168%%p169%%p170%%p171%%p172%%p173%%p174%%p175%%p176%%p177%%p178%%p179%%p180%%p181%%p182%%p183%%p184% I" -n
echoc -g "%p185%%p186%%p187%%p188%%p189%%p190%%p191%%p192%%p193%%p194%%p195%%p196%%p197%%p198%%p199%%p200%%p201%%p202%%p203%%p204%%p205%%p206%%p207% I" -n
echoc -g "%p208%%p209%%p210%%p211%%p212%%p213%%p214%%p215%%p216%%p217%%p218%%p219%%p220%%p221%%p222%%p223%%p224%%p225%%p226%%p227%%p228%%p229%%p230% I" -n
echoc -g "%p231%%p232%%p233%%p234%%p235%%p236%%p237%%p238%%p239%%p240%%p241%%p242%%p243%%p244%%p245%%p246%%p247%%p248%%p249%%p250%%p251%%p252%%p253% I" -n
echoc -g "%p254%%p255%%p256%%p257%%p258%%p259%%p260%%p261%%p262%%p263%%p264%%p265%%p266%%p267%%p268%%p269%%p270%%p271%%p272%%p273%%p274%%p275%%p276% I" -n
echoc -g "%p277%%p278%%p279%%p280%%p281%%p282%%p283%%p284%%p285%%p286%%p287%%p288%%p289%%p290%%p291%%p292%%p293%%p294%%p295%%p296%%p297%%p298%%p299% I" -n
echoc -g "%p300%%p301%%p302%%p303%%p304%%p305%%p306%%p307%%p308%%p309%%p310%%p311%%p312%%p313%%p314%%p315%%p316%%p317%%p318%%p319%%p320%%p321%%p322% I" -n
echoc -g "%p323%%p324%%p325%%p326%%p327%%p328%%p329%%p330%%p331%%p332%%p333%%p334%%p335%%p336%%p337%%p338%%p339%%p340%%p341%%p342%%p343%%p344%%p345% I" -n
echoc -g "%p346%%p347%%p348%%p349%%p350%%p351%%p352%%p353%%p354%%p355%%p356%%p357%%p358%%p359%%p360%%p361%%p362%%p363%%p364%%p365%%p366%%p367%%p368% I" -n
echoc -g "%p369%%p370%%p371%%p372%%p373%%p374%%p375%%p376%%p377%%p378%%p379%%p380%%p381%%p382%%p383%%p384%%p385%%p386%%p387%%p388%%p389%%p390%%p391% I" -n
echoc -g "%p392%%p393%%p394%%p395%%p396%%p397%%p398%%p399%%p400%%p401%%p402%%p403%%p404%%p405%%p406%%p407%%p408%%p409%%p410%%p411%%p412%%p413%%p414% I" -n
echoc -g "%p415%%p416%%p417%%p418%%p419%%p420%%p421%%p422%%p423%%p424%%p425%%p426%%p427%%p428%%p429%%p430%%p431%%p432%%p433%%p434%%p435%%p436%%p437% I" -n
echoc -g "%p438%%p439%%p440%%p441%%p442%%p443%%p444%%p445%%p446%%p447%%p448%%p449%%p450%%p451%%p452%%p453%%p454%%p455%%p456%%p457%%p458%%p459%%p460% I" -n
echoc -g "%p461%%p462%%p463%%p464%%p465%%p466%%p467%%p468%%p469%%p470%%p471%%p472%%p473%%p474%%p475%%p476%%p477%%p478%%p479%%p480%%p481%%p482%%p483% I" -n
echoc -g "%p484%%p485%%p486%%p487%%p488%%p489%%p490%%p491%%p492%%p493%%p494%%p495%%p496%%p497%%p498%%p499%%p500%%p501%%p502%%p503%%p504%%p505%%p506% I" -n
echoc -g "%p507%%p508%%p509%%p510%%p511%%p512%%p513%%p514%%p515%%p516%%p517%%p518%%p519%%p520%%p521%%p522%%p523%%p524%%p525%%p526%%p527%%p528%%p529% I" -n

Jepp that wall, it is not pretty and i am sure it is a better way of doing this. No i did not write this all myself i made a program that kinda wrote it out, but i had to edit it alot. It also seem to be printing it out very slowly O.o

The echoc is a command that can output multiple colors, so if where to set all the

For /l %%B in (1,1,529) do set p%%B= . 

then i could for example set the

%p25%=" & echoc -y "F" & echoc -w "

put that does not realy matter right now. What i need help to is getting this 46 line wall of text doom into a couple of complex for commandos thingy.

Zaizer zazza
  • 91
  • 10
  • Are you asking us to code golf your code for you? I suppose that's fine if you are. I just wanted to try to understand the request a little better. For what it's worth, [powershell `write-host` is pretty nimble](http://stackoverflow.com/a/27322578/1683264) with combining color changes on single lines, if you're dissatisfied with `echoc`'s execution speed. – rojo Apr 13 '15 at 20:38

2 Answers2

1

You may do this process not just in a shorter way, but also faster if you don't process the 529 values each time that you want to show the wall of text. To do that, you may prepare in advance the 23 lines of text just once at beginning of the program. After that, just show the 23 lines each time that you want to show the wall.

@echo off
setlocal EnableDelayedExpansion

rem Define the 23 output lines (just once at beginning)
set k=0
for /L %%j in (1,1,23) do (
   set "line%%j="
   for /L %%i in (1,1,23) do (
      set /A k+=1
      set "line%%j=!line%%j!^!p!k!^!"
   )
)



rem Each time you want to show the wall of text, do the following:

rem 1- Modify the p1..p529 values:
rem . . .

rem 2- Show the 23 lines of the wall of text:
for /L %%j in (1,1,23) do (
   call echoc -w "%%line%%j%% I"
   echo.
)
Aacini
  • 65,180
  • 12
  • 72
  • 108
0

So if it will always be 23 columns by 23 lines, then the following should do the trick (you can always fiddle with the for loop parameters to add more lines / columns):

@echo off
setLocal enableDelayedExpansion

:: Code to set variables p1 through p529

set c=0
for /l %%a in (1,1,23) do (
    set "l="
    for /l %%b in (1,1,23) do (
        set /a c+=1
        set l=!l!%%p!c!%%
    )
    for /f %%c in ('echo !l!') do echoc -w "%%c I"
    echo.
)

The first for loop defines the lines, the second defines the columns, and the third is a trick to correctly output the string of variables as their values (because !l! comes out looking like %p1%%p2%%p3%...).

unclemeat
  • 5,029
  • 5
  • 28
  • 52