Я должен объединить набор файлов 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 ответ1

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

Ресурсы (требуется чтение):

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