1

У меня есть каталог с 50 TXT-файлами в нем. Мне нужно пакет для объединения последней строки каждого файла в один текстовый файл.
Мне также нужно, чтобы имя каждого файла было объединено в одну строку с данными.

Теперь я могу объединить все файлы в один с именем файла в каждой строке, но мне нужна только последняя строка в каждом файле, а не все.
Вот что я сейчас использую.

@ECHO OFF
ECHO Creating %1...
SET "sourcedir=C:\Users\User01\Documents\temp"

FOR /F "Delims=" %%G IN ('DIR /B /a-d "%sourcedir%\*.txt"') DO (
ECHO Adding %%G
for /f "usebackq tokens=*" %%a in ("%sourcedir%\%%~G") do (
Echo %%a, %%G >> Status.csv 

1 ответ1

0
  • Вам нужно либо задержанное расширение, либо подпрограмма, чтобы прочитать содержимое файла в var и вывести только последнюю строку.
  • Ваш пакет сообщает о создании %1 но вместо этого вы используете Status.csv .
  • в вашей партии (фрагменте) отсутствуют закрывающие скобки.

@ECHO OFF & Setlocal EnableDelayedExpansion
If "%~1"=="" (Echo no output file provided & pause & exit /B 1)
ECHO Creating %1...
SET "sourcedir=C:\Users\User01\Documents\temp"
( Echo File,Lastline
    For /f "Delims=" %%G IN ('DIR /B /a-d "%sourcedir%\*.txt"') DO (
      For /f "usebackq tokens=*" %%a in ("%sourcedir%\%%~G") do Set "Line=%%a"
      Echo %%G,!Line!
    )
) > "%~1"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .