No Windows, você pode fazer isso com um arquivo em lotes:
@echo off
setlocal enabledelayedexpansion
set OUTPUT=names.csv
del %OUTPUT% > nul 2>&1
for %%f in (*.txt) do (
set /p NAME=< %%f
echo %%f,!NAME! >> %OUTPUT%
)
endlocal
Se você quiser o nome do arquivo sem a extensão, altere o loop for para este:
for %%f in (*.txt) do (
set /p NAME=< %%f
set INPUT=%%f
echo !INPUT:~0,-4!, !NAME! >> %OUTPUT%
)