Построчное разрезание TXT-файла

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

hawk777
Сообщения: 61
Зарегистрирован: Сб дек 27, 2008 13:16

Построчное разрезание TXT-файла

Сообщение hawk777 »

Здравствуйте уважаемые пользователи ТС. Скажите пожалуйста как можно разбить несколько текстовых файлов построчно, может плагин какой есть или специализированная прога? Подскажите пожалуйста, очень надо. Спасибо за внимание :)
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

hawk777
Каждую строку — в отдельный текстовый файл?
Даже самая богатая фантазия
Не представит себе наши безобразия.
hawk777
Сообщения: 61
Зарегистрирован: Сб дек 27, 2008 13:16

Сообщение hawk777 »

Avada
да, названия файлов не принципиальны. Можно такое сделать?
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

hawk777
Специалисты от праздничных хлопот отойдут — всю правду скажут. А я пока просто уточнил условия задачи, чтобы другим разбираться проще было. Ну и немножко заголовок темы заодно подправил.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

2hawk777
Скрипт PowerPro подойдет? Строчек десять кода. Если нет, жди пока Batya не напишет vbs-скрипт, а Tol!k - батник.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
hawk777
Сообщения: 61
Зарегистрирован: Сб дек 27, 2008 13:16

Сообщение hawk777 »

Вахмурка
Скачал, лазил по ней, честно говоря непонятно как в ней файлы резать :oops:
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

hawk777

Код: Выделить всё

@echo off &chcp 1251 >nul
setlocal enableextensions
if "%~1"=="" (
echo Use: split-into-lines.cmd "any file.txt"
exit /b
)
set "l=1"
for /f "usebackq delims=" %%l in ("%~1") do (
set "line=%%l"
setlocal enabledelayedexpansion
set "n=!l!"
if !l! LSS 1000 set "n=0!l!"
if !l! LSS 100 set "n=00!l!"
if !l! LSS 10 set "n=000!l!"
echo !line!> "%~nx1.!n!"
title !l! &endlocal &set /a l+=1
)
Недостаток: пустые строки не увеличивают счётчик и файлы для них не создаются (собранный файл будет отличаться от исходного отсутствием пустых строк).
Последний раз редактировалось Tol!k Чт янв 14, 2010 02:57, всего редактировалось 2 раза.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

2hawk777
Кого скачал? Где лазил?
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
hawk777
Сообщения: 61
Зарегистрирован: Сб дек 27, 2008 13:16

Сообщение hawk777 »

Вахмурка
скачал powerpro отсюда, лазил по powerpro, если Вы про нее написали :)
Tol!k
Большое спасибо, но как пользоваться Вашим кодом? :oops: да и мне не нужно собирать файл обратно, главное разделить его чтобы каждая строка писалась в новый файл.
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Код: Выделить всё

Dim fso, InFile, Cnt, Stroka, ts

Set fso = CreateObject("Scripting.FileSystemObject")
InFile = WScript.Arguments(0)
Set ts=fso.OpenTextFile(InFile,1)

Cnt=0
Do Until ts.AtEndOfStream
   Stroka=ts.ReadLine
   Set MyFile= fso.CreateTextFile(InFile & "." & CStr(Cnt), True)
   MyFile.WriteLine(stroka)
   MyFile.Close
   Cnt=Cnt+1
Loop

ts.Close
Set ts=Nothing
Set fso = Nothing

WScript.Quit
Сохранить в VBS-файл (например SplitByLine.vbs) и повесить на кнопку, в качестве ее параметров написать: ""%P%N"" (именно в двойных кавычках!). Нажимать кнопку, когда курсор на файле-истточнике.

NB Пустые строки считаются и файлы для них создаются. Если файл-источник в Unicode, то нужно будет изменить пару параметров.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

hawk777 писал(а):как пользоваться Вашим кодом?
Сохранить код в текстовый файл с расширением .cmd (например split-into-lines.cmd)
Запускать из командной строки split-into-lines "твой файл.txt"
Или кнопкой

Код: Выделить всё

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\split-into-lines.cmd
%N
%COMMANDER_PATH%\WCMICONS.DLL,68
split-into-lines


-1
Последний раз редактировалось Tol!k Ср янв 06, 2010 11:32, всего редактировалось 2 раза.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

hawk777
Прелесть в том, что разбираться в PowerPro для исполнения ее скриптов совершенно не обязательно: достаточно ее установить и, возможно, выполнить несколько простейших требований по настройке. Примерно то же касается и батников, и vbs-скриптов.

То, что установил PowerPro - молодец, не сноси. Авось потом и втянешься.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
hawk777
Сообщения: 61
Зарегистрирован: Сб дек 27, 2008 13:16

Сообщение hawk777 »

Всем большое человеческое спасибо за помощь и советы, скрипт отVolniy работает как надо :D
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Volniy писал(а):""%P%N"" (именно в двойных кавычках!)
А нафига вообще кавычки? Для конструкции %P%N TotalCommander сам при необходимости добавит кавычки.
Tol!k писал(а):%COMMANDER_PATH%\split-into-lines.cmd
%N
А вот здесь лучше добавить кавычки: "%N".
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Tol!k писал(а):А вот здесь лучше добавить кавычки: "%N".
Хуже. По той же причине: "TotalCommander сам при необходимости добавит кавычки."
Кавычки нужны только для "%P" и "%T" без связки с %N и %M
Ответить