Этот пакетный файл можно использовать для этой задачи.
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "OutputFile=C:\Test\output.txt"
del "%OutputFile%" 2>nul
for %%I in ("*.txt") do for /F usebackq^ delims^=^ eol^= %%A in ("%%I") do >>"%OutputFile%" echo %%~nxI;%%A
endlocal
Этот пакетный файл записывает в файл C:\Test\output.txt
все непустые строки всех файлов * .txt, найденных в текущем каталоге с именем файла и расширением файла, но без пути к файлу и точкой с запятой в начале каждой строки.
Текущий каталог не должен быть C:\Test
при запуске вышеуказанного командного файла. В противном случае пакетный файл ниже с дополнительным IF потребуется для предотвращения обработки выходного файла с тем же расширением файла, что и файлы для чтения и записи с именем файла в каждой строке.
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "OutputFile=C:\Test\output.txt"
del "%OutputFile%" 2>nul
for %%I in ("*.txt") do if /I not "%%~fI" == "%OutputFile%" for /F usebackq^ delims^=^ eol^= %%A in ("%%I") do >>"%OutputFile%" echo %%~nxI;%%A
endlocal
Пакетный файл ниже может быть использован для чтения также пустых строк и записи их в выходной файл с именем файла и точкой с запятой.
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "OutputFile=C:\Test\output.txt"
del "%OutputFile%" 2>nul
for %%I in ("*.txt") do if /I not "%%~fI" == "%OutputFile%" (
for /F delims^=^ eol^= %%A in ('%SystemRoot%\System32\findstr.exe /N "^" "%%I" 2^>nul') do (
set "Line=%%A"
setlocal EnableDelayedExpansion
>>"%OutputFile%" echo %%~nxI;!Line:*:=!
endlocal
)
)
endlocal
Измените echo %%~nxI;%%A
на echo %%A;%%~nxI
соответственно echo %%~nxI;!Line:*:=!
на echo !Line:*:=!;%%~nxI
, чтобы имя файла после точки с запятой в конце каждой строки выходного файла.
Чтобы понять используемые команды и то, как они работают, откройте окно командной строки, выполните там следующие команды и полностью прочитайте все страницы справки, отображаемые для каждой команды.
del /?
echo /?
endlocal /?
findstr /?
for /?
set /?
setlocal /?
См. Как читать и печатать содержимое текстового файла построчно? с полным объяснением используемого кода. Легко видеть, что командный процессор Windows предназначен для выполнения команд и приложений, а не для обработки текстовых файлов.