CMD/BAT - txt в csv
|
Новый участник Сообщения: 8 |
Профиль | Отправить PM | Цитировать Здравствуйте!
Есть текстовый файл 190124.txt (имя постоянно будет меняться) содержания 5:4:7:8:4: (будет меняться) Нужно на выходе получить содержимое файла 5;4;7;8;4; файл должен быть csv (190124.csv) Как это проще всего реализовать? |
|
Отправлено: 15:39, 25-01-2019 |
Crazy Сообщения: 1187
|
Профиль | Отправить PM | Цитировать Цитата Busla:
К тому же, шаблон регулярки, вполне себе, может быть полным, простым текстом - чего не хватает в этом методе? |
|
------- Отправлено: 15:13, 27-01-2019 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
когда текст - переменный, а шаблон - захардкоженная константа - всё ok а когда найти нужно произвольную подстроку - пользователь ввёл, или в одном файле нужно найти строки из другого - случается жопа. Т.к. нужно изобретать способ экранирования синтаксиса регулярных выражений. |
|
Отправлено: 15:53, 27-01-2019 | #22 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать YuS_2, Шаблон регулярки для замены подстроки, в общем случае, в JS, имхо сложноватый. В VBS реплэйс организован проще.
Вот вариант VBS, ориентированный для применения в планировщике.
Во входной папке обрабатываются файлы по маске, заменяются указанные символы, файлы сохраняются в указанной выходной папке по заданному расширению, исходные файлы перемещаются в архив, чтобы больше их не обрабатывать при последующем запуске батника BoxIn = "Z:\Soft_In" FileIn = "^.*\.txt$" ' *.txt BoxOut = "Z:\Soft_Out" BoxArc = "Z:\Soft_In\Arc" ExtOut = "csv" Str1 = ":" Str2 = ";" Set RegMaska = CreateObject("VBScript.RegExp") RegMaska.Pattern = FileIn RegMaska.IgnoreCase = True With CreateObject("Scripting.FileSystemObject") On Error Resume Next Set Folds = .GetFolder(BoxIn) If Err.Number <> 0 Then MsgBox "Ошибка при открытии папки" + vbCrLf + BoxIn + vbCrLf + vbCrLf + Err.Description WScript.Quit 2 End If On Error GoTo 0 Set Files = Folds.Files For Each jf In Files If RegMaska.Test(jf) Then On Error Resume Next Set fIn = .OpenTextFile(jf, 1, False) If Err.Number <> 0 Then MsgBox "Ошибка при открытии файла" + vbCrLf + .GetAbsolutePathName(jf) + vbCrLf + vbCrLf + Err.Description WScript.Quit 2 End If On Error GoTo 0 Alls = fIn.ReadAll fIn.Close NewName = BoxOut + "\" + .GetBaseName(jf) + "." + ExtOut ArcName = BoxArc + "\" + .GetFileName(jf) On Error Resume Next Set fIn = .CreateTextFile(NewName, True) If Err.Number <> 0 Then MsgBox "Ошибка при создании файла" + vbCrLf + BoxOut + "\" + .GetBaseName(jf) + "." + ExtOut + vbCrLf + vbCrLf + Err.Description WScript.Quit 2 End If On Error GoTo 0 fIn.Write Replace(Alls, Str1, Str2) fIn.Close If .FileExists(ArcName) Then fIn=.DeleteFile(ArcName,True) fIn = .MoveFile(.GetAbsolutePathName(jf), ArcName) End If Next End With ' MsgBox "Скрипт завершен" |
------- Отправлено: 20:17, 27-01-2019 | #23 |
Crazy Сообщения: 1187
|
Профиль | Отправить PM | Цитировать Цитата Busla:
Цитата Busla:
Цитата megaloman:
ЗЫ да и я ведь не говорю ничего против того, что устаревают эти инструменты (wsh), потому и powershell пришел на замену всей этой связки. Но, увы, во всех абсолютно случаях полная замена пока невозможна и по большей части, именно из-за политики микрософт. Ведь даже в самом powershell есть много нюансов, привязанных даже не к версии PoSh, а к версии ОС, причем даже в пределах одной линейки номера этой ОС. Это вызывает удивление/раздражение и прочие отрицательные чувства, что естественно... А вот бороться с этим можно только кардинальным образом, то бишь сменой windows на что-то более другое. |
|||
------- Отправлено: 11:58, 28-01-2019 | #24 |
fascinating rhythm Сообщения: 6597
|
Профиль | Отправить PM | Цитировать Powershell:
Цитата YuS_2:
|
|
------- Отправлено: 11:29, 29-01-2019 | #25 |
Crazy Сообщения: 1187
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Да и вообще, сравнить можно результаты команды get-command... |
|
------- Отправлено: 12:54, 29-01-2019 | #26 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Цитата:
Цитата DJ Mogarych:
|
|||
Отправлено: 14:16, 29-01-2019 | #27 |
fascinating rhythm Сообщения: 6597
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
Цитата YuS_2:
|
|||
------- Отправлено: 11:08, 31-01-2019 | #28 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать DJ Mogarych, формат не кривой. Iska туда засунул csv без заголовков, буквально тот, что в примере топикстартера.
|
Отправлено: 12:46, 31-01-2019 | #29 |
Crazy Сообщения: 1187
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Цитата DJ Mogarych:
к тому же, речь ведь была о: Цитата Iska:
Цитата Busla:
RFC - 4180 Цитата:
|
|||||
------- Последний раз редактировалось YuS_2, 31-01-2019 в 17:22. Отправлено: 15:07, 31-01-2019 | #30 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Разделение одного txt файла на несколько txt файлов | Alexander_88 | Скриптовые языки администрирования Windows | 3 | 25-11-2018 23:50 | |
CMD/BAT - Извлечение строк in.txt -> out.txt в определенном порядке+форматирование текста. | ppm85 | Скриптовые языки администрирования Windows | 6 | 29-09-2015 11:29 | |
txt to csv | vanoman | Хочу все знать | 2 | 06-09-2014 11:51 | |
CMD/BAT - [решено] Периеминование файла doc.csv в Документ_дата_время.csv | kagorec | Скриптовые языки администрирования Windows | 2 | 29-03-2014 18:40 | |
[решено] Вставить строчку из одного txt в оределённое место другого txt | ZeroCrash | AutoIt | 7 | 13-07-2009 07:35 |
|