Как объединить несколько файлов CSV, сгруппированных по определенным начальным строкам имени файла без заголовков (кроме 1-го), используя пакетный файл Windows - PullRequest
0 голосов
/ 25 сентября 2019

Итак, у нас есть много CSV-файлов, которые поступают от разных продавцов в разное время в течение дня,

Каждый из этих CSV содержит определенную информацию с 1-й строкой в ​​качестве строки заголовка, один продавец может отправить несколько CSV, которыеможет иметь несколько записей (строк),

CSV, которые принадлежат одному и тому же продавцу, различаются временными метками, за которыми следует имя продавца в имени файла CSV

Например.

ABC_XYZ_SMAN_05092019_1232.csv

ABC_XYZ_SMAN_05092019_1148.csv

ABC_XYZ_SMAN_05092019_1556.csv

Над записями, принадлежащими продавцу ABC_XYZ

В этом же каталоге есть и другие CSV продавца, также

Например.

QWE_RTY_SMAN_05092019_1323.csv

QWE_RTY_SMAN_05092019_0845.csv

QWE_RTY_SMAN_05092019_2238.csv

Над записями, принадлежащими продавцу QWE_RTY

Каждый из этих файлов имеет информацию с 1-й строкой в ​​качестве заголовков.

Моя цель - создать объединенный CSV для каждого продавца с единственным заголовком и удалить все CSV, которые создают объединенные CSV.

Так что

ABC_XYZ_SMAN_05092019.csv 

QWE_RTY_SMAN_05092019.csv

будетВыходные данные для вышеуказанных CSV, содержащие всю информацию и только один заголовок в 1-й строке.

Все это с помощью командного файла.

1 Ответ

0 голосов
/ 26 сентября 2019

Получите продавца как Token1 и Token2, а оставшееся имя файла как Token3.
Проверьте, существует ли сводка.Если да, скопируйте только данные (без заголовка), если нет, скопируйте весь файл (включая заголовок).
Затем удалите файл.

@echo off
for /f "tokens=1,2,* delims=_" %%a in ('dir /b /on *_sman_*') do (
  if exist "%%a_%%b_merged.csv" (
    more +1 "%%a_%%b_%%c" >>"%%a_%%b_merged.csv"
  ) else (
    type "%%a_%%b_%%c" >"%%a_%%b_merged.csv"
  )
  del "%%a_%%b_%%c"
)

Примечание: прием more +1 работает толькос ограниченным количеством линий (IIRC около 64.000).Если вы достигнете этого предела, убедитесь, что продавец получает повышение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...