Como juntar arquivos txt com o nome do arquivo e apenas a última linha do arquivo txt

1

Eu tenho um diretório com 50 arquivos txt nele. Eu preciso de um lote para mesclar a última linha de cada arquivo em um arquivo txt.
Eu também preciso do nome de cada arquivo mesclado na mesma linha com os dados mesclados.

Eu sou capaz de mesclar todos os arquivos em um com o nome do arquivo em cada linha agora, mas eu só quero a última linha em cada arquivo e não todos.
Abaixo está o que eu estou usando atualmente.

@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 
    
por psmith 07.09.2018 / 15:36

1 resposta

0

  • Você precisa da expansão atrasada ou de uma sub-rotina para ler o conteúdo do arquivo em um var e imprimir apenas a última linha.
  • Seus estados em lote para criar %1 , mas você usa Status.csv .
  • seu lote (fragmento) está faltando alguns parênteses de fechamento.
@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"
    
por 07.09.2018 / 16:09

Tags