@echo off
chcp 1251 >nul
echo %date% %time% >spisok.txt
setlocal enabledelayedexpansion
set "separator=, " REM выведем названия через запятую
set "line="
for %%f in (*) do (
if defined line (
set "line=!line!%separator%%%f"
) else (
set "line=%%f"
)
)
echo !line! >> spisok.txt
endlocal
Одно но! Если файлов будет достаточно много, то размер получившейся итоговой команды: echo !line! >> spisok.txt
вылезет за максимально возможный размер и будет ошибка переполнение буфера или что-то в этом роде, в общем команда не отработает. На сколько помню в cmd максимальный размер команды 4 Кб.
Другой вариант, более простой, - сформировать файл со списком с помощью dir, а затем в этом файле заменить переводы строк символом разделителем. В винде нет стандартных утилит, которые позволяют это сделать. Но в линуксовом наборе стандартных утилит ком.строки инструментов хватает. Замену можно произвести например с помощью утилиты sed или проще tr. Типичный пример применения tr - это замена виндового варанта CRLF на никсовый LF, погуглите. Линуксовые утилиты сейчас есть много где. Как мне кажется самый простой вариант - установить msys2 там в комплекте уже все есть, если добавить в PATH путь к каталогам bin msys2, то все утилиты можно будет вызывать непосредственно из cmd.
msys2 - это bash shell с набором стандартных утилит и пакетным менеджером. С помощью пакетного менеджера можно поставить из репозиториев очень много разного софта, который используется в основном в Linux. Основное предназначение - это сборка софта предназначенного для Linux под винду с помощью портированного компилятора. Компилятор там то же не один, а несколько вариантов, например mingw, clang.