gifts2017

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

Опубликовал dmitry rud (dim-rudakov) в раздел Программирование - Инструментарий

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

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

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

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

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
XMLEditor.zip
.zip 3,64Kb
27.05.15
1
.zip 3,64Kb 1 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Дмитрий Павлик (DimaP) 27.05.15 11:55
Не понял, а структура файла сохраняется, чтобы потом адекватно прочитать?
2. dmitry rud (dim-rudakov) 27.05.15 13:52
(1) DimaP, нет, не сохраняется. Проблема была в том, что трудно было чем-либо открыть файл на редактирование, т.к. все программы зависали из-за большого объема XML-файла.
После "обрезания" файла с набором идентичных данных его можно уже было открыть привычной программой, Notepad++ например, и сохранить структуру.
3. Сергей Пшеничников (Зеленоград) 27.05.15 15:10
Можеь быть, удобнее резать по числу строк, ведь всё равно это потом надо делать?
4. Андрей Торопчин (fjay69) 27.05.15 15:16
Если программа режет большой файл, чтобы его можно бьло открыть для редактирования, то было бы неплохо, чтобы эта же программа потом соединяла куски вновь. Конечно, это можно сделать в командной строке, но всё же. Также не помешали бы исходники.
5. dmitry rud (dim-rudakov) 27.05.15 15:32
(4) fjay69, а зачем исходники, там 10 строк кода в этой программе. Если по части безопасности - то написанную на .NET'е тулзу можно посмотреть любым .NET-рефлектором, типа DotPeek
6. Алексей 1 (AlX0id) 27.05.15 15:33
Хмм.. 100-метровый xml открывается нотпад++ на ура.. XMLPad открывает всю структуру того же файла секунд за 15 - вероятно, если достаточно памяти, конечно. Насколько ж большую портянку вы пытаетесь открыть? )
7. dmitry rud (dim-rudakov) 27.05.15 15:34
(6) AlX0id, ну в моем случае это был файл 480 мб, однако Notepad++ при 8гб оперативы не помог мне его обрезать.
8. Сергей Ка (graZy) 27.05.15 15:35
Тотал командер вроде раньше резал файлы.
да и всяких программ типа "spliter" должно быть навалом
9. dmitry rud (dim-rudakov) 27.05.15 15:38
(8) graZy, видимо навелосипедил
10. Алексей 1 (AlX0id) 27.05.15 15:42
(7) dim-rudakov,
Типа удалить ненужный хвост не дал? Если так, то полагаю, проще было бы создать новый файл и скопировать в него нужную часть - наверняка ж она была оооочень не большой..
11. Владислав Чинючин (vcv) 27.05.15 15:50
PilotEdit Lite у меня загружал и редактировал файлы порядка двух гигов. Авторы клянутся, что может и гораздо больше.
12. dmitry rud (dim-rudakov) 28.05.15 09:28
13. Сергей Ка (graZy) 28.05.15 13:17
(9) dim-rudakov,
ну может кому пригодиться 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 ""^<%1
 ') do (
  set string=%%i
  (
  for /f "delims=" %%j in ('
   call set /p"=%%string:*]=%%"^<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
14. Владислав Чинючин (vcv) 28.05.15 17:33
(13) graZy, Интересный изврат. Но что-то сомнение берёт в его уместности в теме, где озвучивался размер файла, который нужно порезать 480 Мб.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа