Страница 1 из 4

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

Добавлено: Вт янв 05, 2010 23:07
hawk777
Здравствуйте уважаемые пользователи ТС. Скажите пожалуйста как можно разбить несколько текстовых файлов построчно, может плагин какой есть или специализированная прога? Подскажите пожалуйста, очень надо. Спасибо за внимание :)

Добавлено: Вт янв 05, 2010 23:12
Avada
hawk777
Каждую строку — в отдельный текстовый файл?

Добавлено: Вт янв 05, 2010 23:40
hawk777
Avada
да, названия файлов не принципиальны. Можно такое сделать?

Добавлено: Ср янв 06, 2010 00:06
Avada
hawk777
Специалисты от праздничных хлопот отойдут — всю правду скажут. А я пока просто уточнил условия задачи, чтобы другим разбираться проще было. Ну и немножко заголовок темы заодно подправил.

Добавлено: Ср янв 06, 2010 00:42
Вахмурка
2hawk777
Скрипт PowerPro подойдет? Строчек десять кода. Если нет, жди пока Batya не напишет vbs-скрипт, а Tol!k - батник.

Добавлено: Ср янв 06, 2010 09:30
hawk777
Вахмурка
Скачал, лазил по ней, честно говоря непонятно как в ней файлы резать :oops:

Добавлено: Ср янв 06, 2010 10:22
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
)
Недостаток: пустые строки не увеличивают счётчик и файлы для них не создаются (собранный файл будет отличаться от исходного отсутствием пустых строк).

Добавлено: Ср янв 06, 2010 10:48
Вахмурка
2hawk777
Кого скачал? Где лазил?

Добавлено: Ср янв 06, 2010 11:10
hawk777
Вахмурка
скачал powerpro отсюда, лазил по powerpro, если Вы про нее написали :)
Tol!k
Большое спасибо, но как пользоваться Вашим кодом? :oops: да и мне не нужно собирать файл обратно, главное разделить его чтобы каждая строка писалась в новый файл.

Добавлено: Ср янв 06, 2010 11:11
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, то нужно будет изменить пару параметров.

Добавлено: Ср янв 06, 2010 11:29
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

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

То, что установил PowerPro - молодец, не сноси. Авось потом и втянешься.

Добавлено: Ср янв 06, 2010 11:35
hawk777
Всем большое человеческое спасибо за помощь и советы, скрипт отVolniy работает как надо :D

Добавлено: Пт янв 08, 2010 22:25
Batya
Volniy писал(а):""%P%N"" (именно в двойных кавычках!)
А нафига вообще кавычки? Для конструкции %P%N TotalCommander сам при необходимости добавит кавычки.
Tol!k писал(а):%COMMANDER_PATH%\split-into-lines.cmd
%N
А вот здесь лучше добавить кавычки: "%N".

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