Bash one-liner
i=1; find . -maxdepth 1 -type f -name '*.mp3' | sort | split -l 10 -d - "list_"; for f in list_*; do awk '{printf "file '\''%s'\''\n", $0}' "$f" > files.txt; ffmpeg -f concat -safe 0 -i files.txt -c copy "joined_$(printf "%02d" $i).mp3"; ((i++)); done; rm list_* files.txt
PowerShell
$mp3Files = Get-ChildItem -Filter *.mp3 | Sort-Object Name
$batchSize = 10
$groupNumber = 1
for ($i = 0; $i -lt $mp3Files.Count; $i += $batchSize) {
$group = $mp3Files[$i..([math]::Min($i + $batchSize - 1, $mp3Files.Count - 1))]
$listFile = "files.txt"
$group | ForEach-Object { "file '$($_.Name)'" } | Set-Content -Encoding ASCII $listFile
$outFile = "joined_{0:D2}.mp3" -f $groupNumber
ffmpeg -f concat -safe 0 -i $listFile -c copy $outFile
Remove-Item $listFile
$groupNumber++
}