Маленькая программка для обрезания текстовых файлов

Написана на .NET.
В моем случае помогла с большим XML-файлом — чтобы его обрезать для отладки.

При открытии файла читает построчно от начала до конца (количество символов).

Выбираем диапазон символов и сохраняем в файл.

Возможно, я чего-то навелосипедил, и можно было бы поступить проще.

14 Comments

  1. DimaP

    Не понял, а структура файла сохраняется, чтобы потом адекватно прочитать?

    Reply ↓
  2. dim-rudakov

    (1) DimaP, нет, не сохраняется. Проблема была в том, что трудно было чем-либо открыть файл на редактирование, т.к. все программы зависали из-за большого объема XML-файла.

    После «обрезания» файла с набором идентичных данных его можно уже было открыть привычной программой, Notepad++ например, и сохранить структуру.

    Reply ↓
  3. Зеленоград

    Можеь быть, удобнее резать по числу строк, ведь всё равно это потом надо делать?

    Reply ↓
  4. fjay69

    Если программа режет большой файл, чтобы его можно бьло открыть для редактирования, то было бы неплохо, чтобы эта же программа потом соединяла куски вновь. Конечно, это можно сделать в командной строке, но всё же. Также не помешали бы исходники.

    Reply ↓
  5. dim-rudakov

    (4) fjay69, а зачем исходники, там 10 строк кода в этой программе. Если по части безопасности — то написанную на .NET’е тулзу можно посмотреть любым .NET-рефлектором, типа DotPeek

    Reply ↓
  6. AlX0id

    Хмм.. 100-метровый xml открывается нотпад++ на ура.. XMLPad открывает всю структуру того же файла секунд за 15 — вероятно, если достаточно памяти, конечно. Насколько ж большую портянку вы пытаетесь открыть? )

    Reply ↓
  7. dim-rudakov

    (6) AlX0id, ну в моем случае это был файл 480 мб, однако Notepad++ при 8гб оперативы не помог мне его обрезать.

    Reply ↓
  8. graZy

    Тотал командер вроде раньше резал файлы.

    да и всяких программ типа «spliter» должно быть навалом

    Reply ↓
  9. dim-rudakov

    (8) graZy, видимо навелосипедил

    Reply ↓
  10. AlX0id

    (7)

    Типа удалить ненужный хвост не дал? Если так, то полагаю, проще было бы создать новый файл и скопировать в него нужную часть — наверняка ж она была оооочень не большой..

    Reply ↓
  11. vcv

    PilotEdit Lite у меня загружал и редактировал файлы порядка двух гигов. Авторы клянутся, что может и гораздо больше.

    Reply ↓
  12. dim-rudakov

    (11) vcv, спасибо, посмотрю

    Reply ↓
  13. graZy

    (9)

    ну может кому пригодиться CMD 🙂

    @echo off
    chcp 1251>nul
    
    set string_quantity=50
    set index_format=4
    
    :: Set the value of the variable: «+» or nothing.
    set final_blank_line=+
    
    :: Enter the names of one or more files.
    for %%? in (
    «list1.txt»
    «list2.txt»
    «list3.txt»
    ) do (
    call:sub %%?
    )
    
    del .txt .vbs
    exit /b
    
    
    :sub
    
    setlocal
    
    (
    echo.
    echo $$$
    for /f «delims=» %%i in (‘
    find /n /v «»#k8SjZc9Dxk<%1
    ‘) do (
    set string=%%i
    (
    for /f «delims=» %%j in (‘
    call set /p»=%%string:*]=%%»#k8SjZc9Dxk<nul
    ‘) do (
    echo %%j
    )
    )|| (
    echo.
    )
    set /a count_1+=1
    for /f %%j in (‘
    set /a count_1
    ‘) do (
    if %%j==1 (
    set /a count_2+=1
    )
    if %%j==%string_quantity% (
    echo $$$
    set count_1=
    )
    )
    )
    echo $$$
    )>.txt
    
    for /f %%i in (‘
    set /a index_format-1
    ‘) do (
    for /l %%j in (1 1 %%i) do (
    call set zeros=0%%zeros%%
    )
    )
    for /l %%i in (1 1 %count_2%) do (
    set $index=%zeros%%%i
    for /f %%j in (‘
    call echo %%$index:~-%index_format%%%
    ‘) do (
    set /p=»WScript.StdOut.Write(Split(WScript.CreateObject(«Scripting.FileSystemObject»).OpenTextFile(«.txt»).ReadAll(), vbCrLf&»$$$»&vbCrLf)(%%i))»<nul>.vbs
    (
    cscript //nologo .vbs
    if «%final_blank_line%»==»+» (
    echo.
    )
    )>»%~dpn1%%j%~x1″
    )
    )
    
    set /p=»WScript.CreateObject(«SAPI.SpVoice»).Speak(«Processing of the ‘%~nx1’ file is complete!»)»<nul>.vbs
    cscript //nologo .vbs 2>nul
    
    endlocal
    exit /b

    Показать

    спер отсюда http://forum.oszone.net/thread-184176-3.html

    Reply ↓
  14. vcv

    (13) graZy, Интересный изврат. Но что-то сомнение берёт в его уместности в теме, где озвучивался размер файла, который нужно порезать 480 Мб.

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *