Talvez não seja a maneira mais bonita, mas é simples e funciona como você deseja.
echo. > output.txt
for /f "delims=@" %%j in (yourfile.txt) do (
type output.txt > tmp
echo %%j > output.txt
type tmp >> output.txt
)
del tmp
Não use o exemplo acima para processar arquivos grandes. É realmente tempo e recursos consumindo solução. Aqui você tem uma versão mais rápida que acabei de preparar:
setlocal enabledelayedexpansion
set I=0
for /F "tokens=*" %%k in (yourfile.txt) do (
set /A I=!I! + 1
set LINE!I!=%%k
)
for /L %%c in (!I!,-1,1) do (
echo !LINE%%c! >> out.txt
)
Reverter o arquivo de 40kb (10k linhas, 1 caractere em cada) demorou ~ 1 minuto na minha máquina. Lembre-se que ainda é apenas lote. Existem muitas linguagens de programação ou script melhores que seriam melhores para executar essa operação.