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

Написана на .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 не будет опубликован. Обязательные поля помечены *