Конвертируйте большое количество небольших файлов в небольшое количество больших файлов в Windows - PullRequest
0 голосов
/ 24 января 2012

У меня есть около 1000 текстовых файлов по 350 КБ каждый.Файлы называются от part0001 до part1000.Все они присутствуют в одном каталоге.Мне нужно написать пакетный скрипт, чтобы объединить 50 файлов в один файл.Я знаю, что мы можем использовать команду «type» для объединения файлов и команду «for» для итерации по файлам, но я не могу найти правильное решение.Любая помощь будет высоко оценена.

Я хочу что-то вроде:

combine <number_files_to_cimbine_into_one> <soure_directory> <output_directory>

Ответы [ 2 ]

2 голосов
/ 24 января 2012

Это собирает файлы .txt в группы по 10. Это фактически не добавляет их; отображается сообщение о том, что нужно добавить куда.

@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 голос
/ 25 января 2012

Это должно работать для вас, берет 3 аргумента, как вы и просили, и выгружает содержимое в out.txt в вашем каталоге dest.

@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
...