Страница 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
Вахмурка
Скачал, лазил по ней, честно говоря непонятно как в ней файлы резать

Добавлено: Ср янв 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
Большое спасибо, но как пользоваться Вашим кодом?

да и мне не нужно собирать файл обратно, главное разделить его чтобы каждая строка писалась в новый файл.
Добавлено: Ср янв 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 работает как надо

Добавлено: Пт янв 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