Considere em seu manifesto quatro linhas por passageiro e a linha nº 3 é o critério de classificação que deve funcionar:
@echo off&setlocal enabledelayedexpansion
set "plist=passenger.lst"
set "slist=pass_sort.lst"
set /a counter=10000
for /f "usebackqdelims=" %%i in ("%plist%") do (
set "line=%%i"
set /a index=counter%%4
set /a pasno=counter/4
set "$a!pasno!!index!=!line!"
if !index! equ 2 set "$b!line!!counter!=!pasno!"
set /a counter+=1
)
(for /f "tokens=2delims==" %%i in ('set "$b"') do (
for /l %%a in (0,1,3) do (
for /f "delims=" %%x in ("!$a%%i%%a!") do echo(%%x
)))>"%slist%"
type "%slist%"
O código não funciona com =!^
no texto. Isso pode ser corrigido se necessário.