@echo off
setlocal EnableDelayedExpansion
set "comma="
< NUL (
for %%a in (*.tex) do (
set /P "=!comma!%%a"
set comma=,^
%Empty line%
)
echo/
) > liste.dat
EDIT: Ответить на комментарий
Ops! Когда я разрабатывал этот код, который я только отображается вывод на экране, где он выглядит правильно:
C:\> test.bat
One.tex,
Three.tex,
Two.tex
Даже если вывод направляется в файл, а файл отображается на экране, вывод выглядит правильно:
C:\> test.bat > output.txt
C:\> type output.txt
One.tex,
Three.tex,
Two.tex
Однако характер вставляется после каждой запятой просто LF, так что если этот файл открыт с помощью блокнота, ЛФ являются не преобразованы в «конец строки»; просто cmd.exe экран выход преобразует LF в CR + LF пару («приготовленный выход» вместо «сырой выход»).
Способ исправить эту деталь вставляет полный CR + LF пары после каждой запятой:
@echo off
setlocal EnableDelayedExpansion
for /F %%a in ('copy /Z "%~F0" NUL') do set "CR=%%a"
set "comma="
< NUL (
for %%a in (*.tex) do (
set /P "=!comma!%%a"
set comma=,!CR!^
%Empty line%
)
echo/
) > liste.dat
, почему эхо %% а, используется? есть ли какая-либо необходимость, я считаю, что вы могли бы использовать echo %% a вместо этого, мне бы хотелось узнать, есть ли причина, другой мудрый удаление запятой после того, как echo %% a сделает нужный – prudviraj
@prudviraj: возможно, вставить запятую во всех строках? OP хочет «удалить ** последнюю ** запятую» только! – Aacini