2015-01-23 2 views
0

У меня есть каталог, содержащий aprox. 1500 текстовых файлов с данными. Я хочу объединить эти данные в несколько наборов, потому что для каждой измерительной информации всегда есть 24 набора. подобный машина1-00.csv машина1-01.csv машина1-03.csv и т.п. и машина2-00.csv машина2-01.csv машина2-03.csv. Я хочу объединить все данные с machine1 * .csv в machine1.csv и все данные из machine2 * .csv в machine2.csv. Команда copy /b machine1*.csv machine1.csv /y отлично работает для одного набора, но как это сделать для 1500 машинных наборов, каждый из которых имеет 24 файла?Как слить несколько наборов текстовых файлов

ответ

0

Самое простое решение на мой взгляд - создать небольшой пакетный скрипт Windows, который выполняет итерацию в диапазоне от 1 до 24. Для каждого значения в диапазоне скрипт вызывает соответствующий вызов команды копирования.

Следующий файл «merge.bat» Шоуда сделать работу:

@echo off 
FOR /L %%i IN (1, 1, 24) DO (

copy /b machine%%i*.csv machine%%i.csv /y 

) 

Просто создать текстовый файл (с помощью блокнота) под названием «merge.bat» с этим содержанием в месте расположения ваших файлов CSV и run merge.bat Все должно быть хорошо.

+0

Я только что отредактировал ошибку: copy/b machine %% i * .csv machine %% G.csv/y - %% G должен быть заменен на %% i – eliasw

+0

Спасибо Eliasw. Я ошибся в формулировании моего вопроса. Это приводит к предположению, что «machinex» является общей частью наборов имен файлов. К сожалению, это не тот случай. Набор состоит из 24-часовых принятых данных измерений (например, уровня, громкости, давления и т. Д.) Таким образом, именами Уровней будут Levelxx.csv, где xx находится в диапазоне от 00-23 То же самое для объема и давления. В примере уровня я хочу объединить 24-часовые генерируемые CSV-файлы уровня, например, Level-day.csv Но я хочу иметь возможность сделать это для всех разных типов файлов данных – Cornelis

0

Используйте type machine1*.csv и перенаправьте вывод на newfile.csv, используя >. Что-то вроде этого:

@echo off 
setlocal 

for /L %%I in (1,1,63) do (
    >merged%%I.csv type machine%%I*.csv 
    ren merged%%I.csv machine%%I.csv 
) 

Измените 63 на любое наибольшее число. Вы можете записывать скрипты с наибольшим числом, но это проще.

Если ваши файлы CSV не заканчиваются новой строкой, эта проблема будет нуждаться в большем внимании, так как ни copy /b, ни type не добавят новую строку между добавленными файлами.

Смежные вопросы