|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поправить bat для разделения txt по маске |
|
CMD/BAT - Поправить bat для разделения txt по маске
|
Новый участник Сообщения: 5 |
Профиль | Отправить PM | Цитировать http://forum.oszone.net/nextnewesttothread-187384.html
вот тут увидел очень мне подходящий вариант для разделения txt по маске Но код удаляет пустые строки из файлов на выходе. Что дописать, чтобы пустые строки не удалялись? |
|
Отправлено: 21:14, 21-06-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать william-p, поднять в той теме глаза выше и увидеть ещё два «подходящих» варианта кода?! Если «не подходящих» — пишите, чем именно не подходящих.
|
Отправлено: 22:19, 21-06-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Iska, конечно просмотрел там всё.
Есть такого формата текст: <маркер> aaa bbb ccc ddd <маркер> <маркер> eee fff <маркер> Вот это разделяет по пустым строкам, а мне нужно по маркерам @Echo Off SetLocal EnableExtensions EnableDelayedExpansion Set $F=file.txt For /F "Tokens=1* Delims=[]" %%i In ('^<"%$F%" Find /V /N ""') Do ( If Not "%%j"=="" If Not Defined $F Set /A $N+=1& Set $F=F If Not "%%j"=="" Echo.%%j>>out_!$N!.txt If Defined $F If "%%j"=="" Set $F=) @echo off SETLOCAL EnableDelayedExpansion set SRC=file.txt set DST=out_#.txt set DLM=--- --- for /f "usebackq delims=" %%i In ("%SRC%") do ( if not defined $F ( set /a $N+=1& set $F=F set "$O=%DST:#=!$N!%" type nul >"!$O!") if not "%%i"=="%DLM%" echo %%i>>"!$O!" if "%%i"=="%DLM%" set $F=) Поэтому и спрашиваю, как разделить txt, чтоб по маркерам и чтоб пустые строки остались на местах. |
Отправлено: 22:29, 21-06-2013 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата william-p:
|
|
Отправлено: 23:09, 21-06-2013 | #4 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Iska,
file.txt исходный, маркеры в нем "---" Получаются out_1.txt out_2.txt в них пустые строки удаляются, должны сохраняться. |
|
Отправлено: 23:30, 21-06-2013 | #5 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Кстати, VBS тоже можно, но только этот код не ищет по маркерам, только по пустой строке.
FileAll = "file.txt" Set FSO = CreateObject("Scripting.FileSystemObject") Set F = FSO.OpenTextFile(FileAll, 1) MassAll = Split(Replace(F.ReadAll, Chr(10), ""), Chr(13)) F.Close lf = True nf = 0 For i = 0 To UBound(MassAll) If Len(Trim(MassAll(i))) <> 0 Then If lf Then lf = False nf = nf + 1 Set F = FSO.OpenTextFile(WHere + Right("0000" + CStr(nf), 4) + ".txt", 2, True) F.Write MassAll(i) Else F.Write vbCrLf + MassAll(i) End If Else If Not lf Then F.Close lf = True End If Next |
Отправлено: 23:44, 21-06-2013 | #6 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать @echo off SETLOCAL EnableDelayedExpansion set SRC=file.txt set DST=out_#.txt set DLM=--- --- for /f "tokens=1* delims=]" %%a in ('find /v /n "" ^<"%SRC%"') do ( if not defined $F ( set /a $N+=1& set $F=F set "$O=%DST:#=!$N!%" type nul >"!$O!") if not "%%b"=="%DLM%" (echo.%%b>>"!$O!") if "%%b"=="%DLM%" set $F=) |
Отправлено: 23:54, 21-06-2013 | #7 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать sov44, ай, спасибо, всё работает!
|
Отправлено: 23:59, 21-06-2013 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 00:31, 22-06-2013 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Нужен bat-ник для поиска и удаления файлов и папок по маске | Nun-Nun | Скриптовые языки администрирования Windows | 14 | 08-11-2014 09:53 | |
CMD/BAT - bat файл для чтения папок и создания txt файлов | NibelungXXX | Скриптовые языки администрирования Windows | 1 | 21-06-2013 20:47 | |
CMD/BAT - создать Пакетный файл, предназначенный для удаления файлов по маске, расположенных в | Sew12 | Скриптовые языки администрирования Windows | 2 | 21-11-2012 05:42 | |
Поиск слова в txt затем поиск по маске "(383)" и вывод инфы | rustoss | AutoIt | 10 | 29-09-2011 15:27 | |
CMD/BAT - [решено] Выбор данных из txt по маске | hxygen | Скриптовые языки администрирования Windows | 4 | 24-10-2010 15:52 |
|