Sem quaisquer declarações goto goto :
@echo off
setlocal enabledelayedexpansion
set cnt=0
for %%a in (%*) do (
set /a cnt+=1
set pkg!cnt!=%%a
)
for /l %%a in (1,1,!cnt!) do (
echo pkg%%a=!pkg%%a!
)
endlocal
Resultado
C:\>loopbat a b c d e f g h i j k l "m n" o p q r s t u v w x y z
pkg1=a
pkg2=b
pkg3=c
pkg4=d
pkg5=e
pkg6=f
pkg7=g
pkg8=h
pkg9=i
pkg10=j
pkg11=k
pkg12=l
pkg13="m n"
pkg14=o
pkg15=p
pkg16=q
pkg17=r
pkg18=s
pkg19=t
pkg20=u
pkg21=v
pkg22=w
pkg23=x
pkg24=y
pkg25=z
Se você quiser que as aspas removidas dos argumentos que contêm espaços, use set pkg!cnt!=%%~a
em vez de set pkg!cnt!=%%a
(há um til extra no primeiro caso você não identifique a diferença).