2015-01-23 7 views
0

aprox가 포함 된 디렉토리가 있습니다. 데이터가 포함 된 1500 개의 텍스트 파일. 각 측정 데이터마다 항상 24 세트가 있기 때문에이 데이터를 여러 세트에 병합하려고합니다. machine1-00.csv machine1-01.csv machine1-03.csv 및 machine2-00.csv machine2-01.csv machine2-03.csv와 같은 형식입니다. Machine1 * .csv의 모든 데이터를 machine1.csv에 병합하고 machine2 * .csv의 모든 데이터를 machine2.csv에 병합하고 싶습니다. 명령어 copy /b machine1*.csv machine1.csv /y은 한 세트에서 잘 작동하지만, 각각 24 개의 파일을 가진 1500 개의 머신 세트를 수행하는 방법은 무엇입니까?여러 텍스트 파일을 병합하는 방법

답변

0

제 생각에 가장 쉬운 해결책은 1에서 24까지의 범위를 반복하는 작은 Windows 배치 스크립트를 만드는 것입니다. 범위의 각 값에 대해 스크립트는 해당하는 copy 명령 호출을 호출합니다.

작업 할 갈까요 다음 "merge.bat"파일 : 당신의 CSV 파일의 위치에이 내용으로

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

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

) 

단순히 텍스트 파일 (사용 메모장)를 만들 "merge.bat"라는 이름과 merge.bat를 실행하십시오. 괜찮을 것입니다.

+0

복사/b 머신 %% i * .csv 머신 %% G.csv/y - %% G는 %% i로 바꿔야합니다. – eliasw

+0

감사합니다. Eliasw. 나는 내 질문을 공식화하는데 실수를했다. "machinex"는 파일 이름 집합의 공통 부분이라고 가정합니다. 슬프게도 그 경우는 아닙니다. 한 세트는 24 시간 동안 측정 된 데이터 (예 : 레벨, 볼륨, 압력 등) 으로 구성되어 있으므로 Level의 파일 이름은 Levelxx.csv가됩니다. 여기서 xx는 00-23 입니다. 볼륨 및 압력에 대해서도 동일합니다. Level의 예제에서 레벨의 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도 추가 된 파일 사이에 새로운 줄을 추가하지 않으므로이 문제에 더 많은주의가 필요합니다.

관련 문제