Programas por lotes de Windows

Programas por lotes de Windows

Tengo que fusionar un conjunto de archivos ASCII e intenté usar este archivo por lotes, este crea un archivo nuevo que combina todos los archivos y elimina el encabezado de cada uno de los archivos.

@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

Estos archivos por lotes funcionan, pero quiero usar comodines como *.dat en lugar de proporcionar los nombres de cada archivo en el archivo por lotes. ¿Alguien podría ayudarme sobre cómo utilizar comodines en lugar de escribir nombres de archivos individuales?

Respuesta1

Pruebe el siguiente fragmento 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

Úselo, por ejemplo, de la siguiente manera:>"1127756merged.txt" 1127756.bat

Aquí

  • FOR %%I in (*.dat)el bucle devuelve la lista de todos .datlos archivos en la carpeta del directorio actual;
    • esta lista esdinámicaes decir, carga incluso los archivos que agregas a la carpeta durante el procesamiento;
    • conseguir unestáticolista, use FOR /F "delims=" %%I in ('dir /B *.dat')en su lugar;
  • el bucle anidado %%itrata todos los archivos en secuencia;
  • nota delims=en lugar de tu delims=*; (y piense: tal vez me equivoque con esta sugerencia).

Recursos(lectura obligatoria):

información relacionada