2012-01-24 2 views
0

각각 350KB의 약 1000 개의 텍스트 파일이 있습니다. 파일의 이름은 part0001에서 part1000까지입니다. 모두 하나의 디렉토리에 있습니다. 하나의 파일을 만들기 위해 50 개의 파일을 결합하는 배치 스크립트를 작성해야합니다. 우리는 '형식'명령을 사용하여 파일을 연결하고 'for'명령을 사용하여 파일을 반복 할 수 있음을 알고 있지만 적절한 해결 방법을 찾을 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.많은 수의 작은 파일로 변환하여 Windows에서 작은 수의 큰 파일로 변환

combine <number_files_to_cimbine_into_one> <soure_directory> <output_directory> 
+0

간격이 없습니다. 그래서 처음 50을 하나의 파일로 합쳐서 다음 50을 두 번째 파일로 합치고 싶었습니다. – Amar

답변

2

이 그것은 사실을 추가하지 않습니다 (10)의 그룹으로 파일을 .txt 인 수집;

내가 좋아하는 뭔가 원하는 어디에 추가해야 하는지를 나타내는 메시지를 표시합니다.

@echo off 
setlocal EnableDelayedExpansion 

REM outcount is the current output file 
set outcount=1 
REM groupcount is the number of files seen in the current group 
set groupcount=0 

for %%I in (*.txt) do (
    if !groupcount!==10 (
    set /A outcount=!outcount!+1 
    set groupcount=0 
) 
    echo Append %%I to combinedFile!outcount! 
    set /A groupcount=!groupcount!+1 
) 
+1

고마워요. 문제에 대한 정확한 해결책을 찾기 위해 답을 편집했습니다. – Amar

1

이 당신을 위해 작동합니다, 당신은 요구처럼 3 개 인수 소요되며, 최종 도착의 디렉토리에 out.txt로 내용을 덤프합니다.

@echo off 
setlocal enabledelayedexpansion 
set TOTALFILECOUNT=%1 
set FROMDIR=%2 
set TODIR=%3 
set OUTFILENAME="%TODIR%\out.txt" 
set COUNTER=0 

FOR /f "tokens=*" %%A IN ('DIR /B "%FROMDIR%\*.txt"') DO (
    SET /a COUNTER+=1 
    type %FROMDIR%\%%A >> %OUTFILENAME% 
    if !COUNTER!==%TOTALFILECOUNT% GOTO :EOF 
) 
endlocal 
+0

고맙습니다 @ 조지, 이쪽은 우아합니다 :) – Amar

관련 문제