So as I continue on this we can use a for to transfer values to x as you can see we can pass a large amount of parameters to x I am working on building a macro example with 10000 bytes to pass to x. I am sure with call to things slow down a bit but not by much, and I can pass arguments beyond 8k which will always default to the value of %1.
Code: Select all
@echo off
@setlocal
:test_1
set PC=%%%%%
set CMD=echo;%PC%A
call :label1 "for /L %PC%A in (1,1,10) do %CMD%" "for /L %PC%A in (1,1,20) do %CMD%"^
"for /L %PC%A in (1,1,30) do %CMD%" "for /L %PC%A in (1,1,40) do %CMD%"^
"for /L %PC%A in (1,1,50) do %CMD%" "for /L %PC%A in (1,1,60) do %CMD%"^
"for /L %PC%A in (1,1,70) do %CMD%" "for /L %PC%A in (1,1,80) do %CMD%"^
"for /L %PC%A in (1,1,90) do %CMD%" "for /L %PC%A in (1,1,100) do %CMD%"^
"for /L %PC%A in (1,1,110) do %CMD%" "for /L %PC%A in (1,1,120) do %CMD%"^
"for /L %PC%A in (1,1,130) do %CMD%" "for /L %PC%A in (1,1,140) do %CMD%"^
"for /L %PC%A in (1,1,150) do %CMD%" "for /L %PC%A in (1,1,160) do %CMD%"^
"for /L %PC%A in (1,1,170) do %CMD%" "for /L %PC%A in (1,1,180) do %CMD%"^
"for /L %PC%A in (1,1,190) do %CMD%" "for /L %PC%A in (1,1,200) do %CMD%"^
"for /L %PC%A in (1,1,210) do %CMD%" "for /L %PC%A in (1,1,220) do %CMD%"^
"for /L %PC%A in (1,1,230) do %CMD%" "for /L %PC%A in (1,1,240) do %CMD%"^
"for /L %PC%A in (1,1,250) do %CMD%" "for /L %PC%A in (1,1,260) do %CMD%"^
"for /L %PC%A in (1,1,270) do %CMD%" "for /L %PC%A in (1,1,280) do %CMD%"^
"for /L %PC%A in (1,1,290) do %CMD%" "for /L %PC%A in (1,1,300) do %CMD%"
exit /b
:label1
for /f "tokens=*" %%x in ("%~1") do (
if [%%x]==[] (goto :eof
) else echo;%%x
)&& shift && goto :label1
Of course storing the value %1 in x only works for storing the command and not execution instead we
use
Code: Select all
:label1
if ["%~1"]==[""] goto :eof
%~1
shift
goto :label1