Назначение
Если нужно открыть большой Log-файл в Windows, но ни один из установленных инструментов не позволяет открыть файл такого объёма (100-2000 МБайт). То можно поделить файл на меньшие части, используя командный сценарий (bat-ник). Возможность выполнить bat-файл всегда есть в Windows. Расход оперативной памяти при выполнении разделения будет приемлемым - двойной размер файла (600 МБайт ОЗУ для файла в 300 МБайт).Текст сценария SplitBigTextFile.bat
echo off
setlocal enabledelayedexpansion
set fileName=%1
set partSize=%2
set partExt=%3
set index=0
set partNumber=0
for /F "tokens=*" %%i in (!fileName!) do (
set /a index+=1
if !index! GTR !partSize! (
set /a partNumber+=1
set index=0
)
@echo %%i >> !fileName!.!partNumber!.!partExt!
)
Параметры
Параметры выполнения скрипта, должны быть переданы при вызове:- Путь к текстовому файлу, на основе которого надо создать несколько маленьких файлов.
- Максимальное количество строк, в маленьком файле.
- Расширение для создаваемых маленьких файлов.
Пример
Пример вызова:SplitBigTextFile.bat D:\BigLog.log 10000 log
В результате работы сценария рядом с файлом D:\BigLog.log будут созданы файлы:
- D:\BigLog.log.1.log
- D:\BigLog.log.2.log
- D:\BigLog.log.3.log
- ...
А такие небольшие файлы, уже можно будет просмотреть в имеющемся в данный момент текстовом редакторе.
update 11 марта 2015. При работе потребуется ОЗУ в два раза больше размера файла. Для начала работы объём свободной оперативной памяти должен быть больше объёма файла. Так если файл размером 2 ГБайт, то при свободных 2,3 ГБайт процесс запустится и будет работать. Файлы более 2 ГБайт не разделял таким способом — памяти не хватает. Обработка некоторых текстовых файлов с кодировкой UCS-2 Little Endian не работает изначально (так выгружаютя файлы реестра *.reg). Чтобы заработала можно с помощью команды type перенести содержимое сбойного файла в новый файл командой:
type сбойныйФайл.txt > новыйФайл.txt
теоретически, могут потеряться данные, так как кодировка файла сменится на ANSI, но на практике данные не теряются — большая часть символов латинские.
Комментариев нет:
Отправить комментарий