Пакетные программы Windows

Пакетные программы Windows

Мне нужно объединить набор файлов ASCII, и я попытался использовать этот пакетный файл. Он создает новый файл, который объединяет все файлы и удаляет заголовок из каждого из файлов.

@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

этот пакетный файл работает, но я хочу использовать подстановочные знаки, например *.dat, вместо того, чтобы указывать имена файлов в пакетном файле. Может ли кто-нибудь помочь мне, как использовать подстановочные знаки вместо ввода отдельных имен файлов?

решение1

Попробуйте следующий фрагмент кода:

@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

Используйте его, например, следующим образом:>"1127756merged.txt" 1127756.bat

Здесь

  • FOR %%I in (*.dat)цикл возвращает список всех .datфайлов в текущей папке каталога;
    • этот списокдинамическийт.е. загружает даже те файлы, которые вы добавляете в папку во время обработки;
    • чтобы получитьстатическийсписок, используйте FOR /F "delims=" %%I in ('dir /B *.dat')вместо этого;
  • вложенный %%iцикл обрабатывает все эти файлы последовательно;
  • примечание delims=вместо вашего delims=*; (и подумайте: может быть, я ошибаюсь в этом предложении).

Ресурсы(обязательно к прочтению):

Связанный контент