|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] разбить файл на много файлов по шаблону и каждый файл положить в папку |
|
CMD/BAT - [решено] разбить файл на много файлов по шаблону и каждый файл положить в папку
|
Новый участник Сообщения: 5 |
Профиль | Отправить PM | Цитировать Здравствуйте, я не силен в батниках помогите пожалуйста.
имеем файл с содержимым [01.01]Описание лотоса Людей издавна изумляла, радовала и притягивала красота цветков лотоса. Над поверхностью воды среди ярко-зелёных плавающих листьев распускается крупный (до 30 см диаметром) цветок. Жёлтый венчик окружён несколькими рядами нежных ярко-розовых или жёлтых лепестков. У основания их цвет более насыщенный, чем на кончиках. Цветок лотоса всегда обращен к Солнцу, поэтому древние египтяне, индусы, китайцы обожествляли его, считали священным и загадочным растением. Цветки лотоса находили в древнеегипетских гробницах. Его изображения высечены в камне на древних памятниках архитектуры. В легендах и преданиях этих народов цветок лотоса всегда был символом красоты, мудрости и силы. Лотос - цветок богов, так считали древние индусы и египтяне. И не только из-за его красоты и обращенности к [01.02]Акула Из всех обитателей океана акулы, по-видимому, пользуются наибольшей известностью и самой дурной славой. В своём большинстве это крупные твари с длинным туловищем, имеющим максимально обтекаемую форму, что позволяет им развивать впечатляющую скорость и совершать дальние путешествия. Акулы - хищники и поэтому, как правило, вооружены острыми, как бритва, зубами. Зубы растут во рту в 5-15 рядов. Сила челюстей чудовищна. Они действуют как кусачки, и крупной хищнице ничего не стоит пополам перекусить небольшого дельфина. От такой нагрузки зубы в передней рабочей шеренге быстро снашиваются и выпадают, но заботиться о вставных зубах им не приходится. У акул ползающие зубы. [01.03]Описание верховки Верховка маленькая рыбка. Похожа на маленькую уклейку, от которой отличается более широким туловищем и головой, короткой боковой линией (распространена на первые 2-12 чешуек). На голову заходит сеть чувствительных канальцев, расположенных группами: на верхней части, под глазами, на предкрышках. Тело умеренно длинное, сжатое с боков. Голова небольшая, коническая. Глаз сравнительно большой. Рот конечный, косой, направлен вверх, нижняя челюсть слегка входит в углубление верхней челюсти. [01.04]Описание беркута Беркут - самая большая птица из орлиного племени. Его смело можно назвать королем орлов. Это крупная и сильная птица весит от 3 до 6 килограммов. Размах крыльев у некоторых особей достигает трёх с половиной метров. Облик беркута типично орлиный, окраска тёмно-бурая. Когда он летит, то хорошо заметны белые пятна на крыльях и такое же основание хвоста. Очень просто отличить молодого беркута от старого. У молодых очень много белых пятен. Кстати, у беркута самый длинный хвост из всех орлов. необходимо разбить на множестфо файлов от скобки до скобки и разложить содержимое в тхт файлы и вложить их в папки. папки нужно нумеровать попорядку 1, 2, 3 и.т.д. в результате должен получиться набор папок, в котором один файл с текстом Описание лотоса Людей издавна изумляла, радовала и притягивала красота цветков лотоса. Над поверхностью воды среди ярко-зелёных плавающих листьев распускается крупный (до 30 см диаметром) цветок. Жёлтый венчик окружён несколькими рядами нежных ярко-розовых или жёлтых лепестков. У основания их цвет более насыщенный, чем на кончиках. Цветок лотоса всегда обращен к Солнцу, поэтому древние египтяне, индусы, китайцы обожествляли его, считали священным и загадочным растением. Цветки лотоса находили в древнеегипетских гробницах. Его изображения высечены в камне на древних памятниках архитектуры. В легендах и преданиях этих народов цветок лотоса всегда был символом красоты, мудрости и силы. Лотос - цветок богов, так считали древние индусы и египтяне. И не только из-за его красоты и обращенности к То есть, от скобки ] до другой скобки [ |
|
Отправлено: 13:16, 01-02-2017 |
Ветеран Сообщения: 2703
|
Профиль | Отправить PM | Цитировать Похоже задача не очень годится для решения в CMD. Возможны неприятности с спецсимволами типа !
Вот решение в CMD. Ограничения:
1. Заголовок должен быть в отдельной строке 2. Квадратные скобки не должны быть в другом тексте @Echo off cls Set "From=Z:\Box_In\Файл с содержимым.txt" Set "To=Z:\Box_Out\Папка с содержимым" SetLocal EnableExtensions EnableDelayedExpansion Call :SubName "NameFile" "%From%" Set "TFrom=%To%\%NameFile%.tmp" Md "%To%" 2>nul Del "%TFrom%" 2>nul Set /A Count0=1000 Set /A Count1=%Count0%+1 Set /A CountN=Count0 FOR /F "usebackq delims=" %%k IN (`More "%From%"`) DO >>"%TFrom%" (Echo %%k) FOR /F "usebackq Skip=2 delims=[]" %%n IN (`Find /N "]" "%TFrom%"`) DO ( Set /A CountN+=1 Md "%To%\!CountN:~1,999!" 2>nul ) FOR /L %%i IN (%CountN%,-1,%Count1%) DO ( Set /A ToFile=%%i Set "ToFile=%To%\!ToFile:~1,999!\%NameFile%" FOR /F "usebackq Skip=2 delims=[]" %%n IN (`Find /N "]" "%TFrom%"`) DO Set /A j2=%%n & Set /A j1=%%n-1 FOR /F "usebackq tokens=2* delims=]" %%s IN (`More +!j1! "%TFrom%"`) DO >"!ToFile!" (Echo %%s) FOR /F "usebackq delims=" %%s IN (`More +!j2! "%TFrom%"`) DO >>"!ToFile!" (Echo %%s) Call :Shrink "%TFrom%" !j2! ) Del "%TFrom%" 2>nul Del "%TFrom%.tmp" 2>nul GoTo :Eof :SubName Set "%~1=%~nx2" GoTo :Eof :Shrink Move /Y %1 "%~1.tmp" >nul Set /A kk=0 FOR /F "usebackq delims=" %%k IN (`More "%~1.tmp"`) DO ( Set /A kk+=1 If !kk! EQU %2 GoTo :Eof >>%1 (Echo %%k) ) GoTo :Eof Вот vbs, здесь, как Вы заказывали, от скобки до скобки
File_In = "Z:\Box_In\Файл с содержимым.txt" Box_Out = "Z:\Box_Out\Папка с содержимым" S1 = "]" S2 = "[" Set FSO = CreateObject("Scripting.FileSystemObject") Set NFile = FSO.OpenTextFile(File_In, 1, False) ' Открываем текстовый файл S = NFile.ReadAll NFile.Close FName = FSO.GetFileName(File_In) If Not FSO.FolderExists(Box_Out) Then FSO.CreateFolder (Box_Out) N1 = 1 i = 10000 Do N1 = InStr(N1, S, S1) + 1 If N1 = 1 Then Exit Do N2 = InStr(N1, S, S2) - 1 If N2 = -1 Then N2 = Len(S) SS = Mid(S, N1, N2 - N1 + 1) ' MsgBox SS N1 = N2 + 2 i = i + 1 DirName = Box_Out + "\" + Right(CStr(i), 3) If Not FSO.FolderExists(DirName) Then FSO.CreateFolder (DirName) Set NFile = FSO.OpenTextFile(DirName + "\" + FName, 2, True) ' Открываем текстовый файл NFile.Write SS NFile.Close Loop |
------- Отправлено: 20:05, 02-02-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Не совсем понял, что требуется, но примерно так (на WSH):
Скрытый текст
Option Explicit
Dim strSourceFile
Dim objFSO
Dim strContent
Dim objMatch
Dim iFolderCount
Dim strDestFile
strSourceFile = "C:\Мои проекты\0040\Source.txt"
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
With objFSO.OpenTextFile(strSourceFile)
strContent = .ReadAll()
.Close
End With
With WScript.CreateObject("VBScript.RegExp")
.IgnoreCase = True
.Global = True
.Pattern = "\[\d+\.\d+\](.*)\r\n([\s\S]*?)(?=(\[|$))"
If .Test(strContent) Then
iFolderCount = 0
For Each objMatch In .Execute(strContent)
iFolderCount = iFolderCount + 1
strDestFile = objFSO.BuildPath(CStr(iFolderCount), objMatch.Submatches.Item(0) & ".txt")
If Not objFSO.FolderExists(CStr(iFolderCount)) Then
objFSO.CreateFolder CStr(iFolderCount)
End If
With objFSO.CreateTextFile(strDestFile, True)
.WriteLine objMatch.Submatches.Item(0)
.WriteLine
.Write objMatch.Submatches.Item(1)
.Close
End With
Next
End If
End With
Set objFSO = Nothing
WScript.Quit 0
|
Отправлено: 00:30, 03-02-2017 | #3 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Спасибо огромное. скрипты работают!
|
Отправлено: 08:38, 03-02-2017 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Поместить каждый файл в одноименную папку. | Metallor | Скриптовые языки администрирования Windows | 11 | 20-03-2022 00:59 | |
CMD/BAT - [решено] можно ли батником разрезать файл по шаблону? | ruslaw | Скриптовые языки администрирования Windows | 10 | 30-10-2021 19:05 | |
CMD/BAT - [решено] Скопировать файл по шаблону | kot488 | Скриптовые языки администрирования Windows | 1 | 20-12-2016 13:14 | |
CMD/BAT - поиск строк по шаблону и запись в отдельный файл | AVTS | Скриптовые языки администрирования Windows | 4 | 13-07-2012 00:51 | |
CMD/BAT - [решено] *.bat файл на удаление папок по шаблону | smol84 | Скриптовые языки администрирования Windows | 3 | 10-03-2009 15:49 |
|