Programas em lotes do Windows

0

Eu tenho que mesclar um conjunto de arquivos ASCII e tentei usar esse arquivo em lotes, este cria um novo arquivo que combina todos os arquivos e remove o cabeçalho de cada um dos arquivos.

@echo off

FOR /F "delims=*" %%i in (header.txt) do @echo %%i
FOR /F "skip=1 delims=*" %%i in (A1.DAT A2.DAT A3.DAT A4.DAT A5.DAT) do @echo %%i

esses arquivos em lote funcionam, mas eu quero usar o curinga como * .dat em vez de fornecer cada nome de arquivo no arquivo em lote. Alguém poderia me ajudar, como usar curingas em vez de digitar nomes de arquivos individuais?

    
por tvk66866 24.09.2016 / 04:40

1 resposta

1

Experimente o próximo snippet de código:

@echo off
SETLOCAL EnableExtensions
FOR /F "delims=" %%i in (header.txt) do @echo %%i
FOR %%I in (*.dat) do @FOR /F "usebackq skip=1 delims=" %%i in ("%%~I") do @echo %%i

Use, por exemplo da seguinte forma: >"1127756merged.txt" 1127756.bat

aqui

  • FOR %%I in (*.dat) loop retorna lista de todos os arquivos .dat na pasta do diretório atual;
    • essa lista é dinâmica , ou seja, carrega até arquivos que você adiciona à pasta durante o processamento;
    • para obter uma lista estática , use FOR /F "delims=" %%I in ('dir /B *.dat') ;
  • aninhado %%i loop trata todos os arquivos em sequência;
  • observe delims= em vez de seu delims=* ; (e pense: talvez eu esteja errado com essa sugestão).

Recursos (leitura obrigatória):

por 24.09.2016 / 08:36