|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Создать несколько файлов из одного по условию |
|
CMD/BAT - [решено] Создать несколько файлов из одного по условию
|
Новый участник Сообщения: 16 |
День добрый.
Необходима помощь. Есть текстовый файл в котором часть строк начинается с символа # и в этой же строке содержится идентификатор s**********(11 цифр после буквы S) идентификаторы могут повторяться. Необходимо создать в этой же папке файлы с именем идентификатора и скопировать в него строки которые находятся с # и до следующей #. если такой файл уже создан то просто добавить в него строки. пример исходного файла # 5 НП '!!!!!!!!!!!!!!!!', ФАМИЛИЯЯ ИМЯЯЯЯЯЯ ОТЧЕСТВО, s12345678901 QQQ2 'QQQQQQQQQQQQQQQQQQ aaaaaaaaaaaaaa', aaa. 7 Не заполнено поле "aaaaaaaaaaaaaaaaaaaaaaaaa aaaaa/ aaaaaaaaaaaa" (Bed_Day) dfhhgfhhgfhgfh gfhgfh fgh gfh fgh gfh gf h gfh gfh # 13 НП '!!!!!!!!!!!!!!!!', ФАМИЛИЯЯ ИМЯЯЯЯЯЯ ОТЧЕСТВО, s09876543210 QQQ2 'QQQQQQQQQQQQQQQQQQ aaaaaaaaaaaaaa', aaa. 7 Не заполнено поле "aaaaaaaaaaaaaaaaaaaaaaaaa aaaaa/ aaaaaaaaaaaa" (Bed_Day) # 98 НП '!!!!!!!!!!!!!!!!', ФАМИЛИЯЯ ИМЯЯЯЯЯЯ ОТЧЕСТВО, s11111111111 QQQ2 'QQQQQQQQQQQQQQQQQQ aaaaaaaaaaaaaa', aaa. 7 aaaaaqwfdrewgthgfjhgfjhgfjgjgf dfhbnjhk,li;'po]0-[98ouyjgfjgfjhfhj Не заполнено поле "aaaaaaaaaaaaaaaaaaaaaaaaa aaaaa/ aaaaaaaaaaaa" (Bed_Day) # 143 НП '!!!!!!!!!!!!!!!!', ФАМИЛИЯЯ ИМЯЯЯЯЯЯ ОТЧЕСТВО, s12345678901 QQQ2 'QQQQQQQQQQQQQQQQQQ aaaaaaaaaaaaaa', aaa. 7 Не заполнено поле "aaaaaaaaaaaaaaaaaaaaaaaaa aaaaa/ aaaaaaaaaaaa" (Bed_Day) |
|
Отправлено: 13:11, 25-04-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Rey71:
Цитата Rey71:
|
||
Отправлено: 13:59, 25-04-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать
прикрепил 1111.txt - исходный файл,
s09876543210.TXT и s12345678901.txt результирующие файлы. |
||||
Отправлено: 14:20, 25-04-2018 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Rey71, примерно понятно. Нужно разбить содержимое исходного файла на части и сгруппировать части по идентификатору. Будем смотреть.
|
Отправлено: 15:30, 25-04-2018 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Rey71, попробуйте так (на WSH):
Скрытый текст
Option Explicit Const ForAppending = 8 Dim strSourceFile Dim arrContent Dim objRegExp Dim i If WScript.Arguments.Count = 1 Then strSourceFile = WScript.Arguments.Item(0) With WScript.CreateObject("Scripting.FileSystemObject") If .FileExists(strSourceFile) Then With .OpenTextFile(strSourceFile) arrContent = Split(.ReadAll(), "#") .Close End With Set objRegExp = WScript.CreateObject("VBScript.RegExp") objRegExp.Pattern = "^\s+\d+\s+ЌЏ '!!!!!!!!!!!!!!!!', .+,\s+(s\d+)$" For i = LBound(arrContent) + 1 To UBound(arrContent) If objRegExp.Test(Split(arrContent(i), vbCrLf)(0)) Then With .OpenTextFile(.BuildPath(.GetParentFolderName(strSourceFile), objRegExp.Execute(Split(arrContent(i), vbCrLf)(0)).Item(0).Submatches.Item(0) & ".txt"), ForAppending, True) .Write "#" & arrContent(i) .Close End With End If Next Set objRegExp = Nothing Else WScript.Echo "Can't find source file [" & strSourceFile & "]." WScript.Quit 2 End If End With Else WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source file>" WScript.Quit 1 End If WScript.Quit 0 Сохраните приведённый код в файл с расширением .vbs. Путь к исходному файлу указывается параметром скрипта (также можно просто перетянуть исходный файл на скрипт в Проводнике). Перед запуском убедитесь, что рядом с исходным файлом отсутствуют какие-либо ранее созданные конечные файлы, поскольку скрипт не занимается проверкой, были ли эти файлы созданы в текущем сеансе работы или ранее, а просто дописывает информацию. |
|
Отправлено: 17:12, 25-04-2018 | #5 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Iska, спасибо большое. Буду пробовать. По результату отпишусь.
|
Отправлено: 17:37, 25-04-2018 | #6 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Iska, день добрый.
В строке вашего кода objRegExp.Pattern = "^\s+\d+\s+ЌЏ '!!!!!!!!!!!!!!!!', .+,\s+(s\d+)$" задается шаблонная строка. Возможно ли ее исправить таким образом чтобы условие было такое: первый символ строки решетка, последнее слово строки начинается с s и 11 цифр после него, а между этими условиями любой набор текста? Просто шаблонная строка иногда меняется (добавляются или удаляются слова и символы в середине строки)и отбор происходит неверно. |
Отправлено: 07:08, 26-04-2018 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Rey71:
Цитата Rey71:
— в начале строки не менее одного пробела, затем произвольной длины содержимое, длиной не менее одного символа, затем ещё не менее одного пробела, затем «s» плюс точно одиннадцать цифр, затем конец строки. Устроит? |
||
Отправлено: 08:08, 26-04-2018 | #8 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Iska, спасибо огромное. Буду пробовать.
|
Отправлено: 08:18, 26-04-2018 | #9 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Все работает. Спасибо огромное.
|
Отправлено: 08:13, 28-04-2018 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Перемещение и удаление файлов по условию и маске | VitHAK | Скриптовые языки администрирования Windows | 14 | 23-12-2013 08:57 | |
CMD/BAT - [решено] Создать архив из всех файлов текущего каталога и его подкаталогов кроме одного подкат | bulchonok | Скриптовые языки администрирования Windows | 4 | 04-04-2013 22:26 | |
Любой язык - [решено] Как открыть/удалить несколько файлов одного расширения без указания имени файла | 9119 | Скриптовые языки администрирования Windows | 1 | 14-12-2012 15:42 | |
2010 - как сделать выбор параметра из таблицы данных по входному условию | Pozia | Microsoft Office (Word, Excel, Outlook и т.д.) | 15 | 06-06-2011 21:49 | |
2008 - Как в 2008 с помощью wevtutil получить записи из журнала событий по условию ? | SergeyPP | Windows Server 2008/2008 R2 | 0 | 24-07-2008 17:03 |
|