У меня есть около 20 папок, и все они имеют около 100 CSV-файлов в каждой. Я хочу объединить их все в один файл. Как мне это сделать? Я знаю о команде copy чтобы объединить файлы одной папки. Если я это сделаю, я получу 20 файлов в 20 папках. Чтобы объединить их, как я буду проходить в каждой папке и делать?

Я пытаюсь написать пакетный скрипт, как это:

FOR /D /R %G in ("*") DO (
cd %G 
COPY *.csv new.csv )

Но это не работает правильно. Какие-либо предложения?

2 ответа2

1

Если все файлы действительно являются допустимыми CSV, то изменив последнюю строку для циклического перемещения по файлам в текущей папке с помощью переменной% H, измените копию на:

TYPE %H >>new.csv

Должен работать (боюсь, не полностью протестирован).

Однако лучшим подходом будет использование PowerShell, поскольку в нем есть командлеты для обработки ввода и вывода CSV, и поэтому он сможет обрабатывать любые странности в структуре файлов, не повреждая вывод.

0

У меня первая часть работает, то есть все CSV-файлы в каждой подпапке объединяются в CSV-файл каждый. Итак, у меня есть 20 CSV-файлов. Ошибка была единственной % . Это должно быть %%G

 FOR /D /R %%G in ("*") DO (
  cd %%G 
  COPY *.csv new.csv )

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