|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Изменение строк в файле |
|
CMD/BAT - Изменение строк в файле
|
Новый участник Сообщения: 4 |
Добрый день! Решил усложнить себе жизнь и начать оптимизировать некоторые процессы. Поэтому буду премного благодарен за ответ с комментариями, что где и почему пишем) Задача: в папке сложены Файлы 1, 2, 3... 1000. Формат txt. В этих файлах есть текст. Во всех разный. При этом есть строка (чаще первая) в которой написано «ааа_1#0», где 1 это число которое необходимо оставить, а все остальное надо (что в ковычках) надо удалить. Как это сделать через исполнительный файл, ибо файликов таких очень много??? Количество символов в ковычках всегда разное. Нужная комбинации всегда окружена _ и #
|
|
Отправлено: 15:32, 07-06-2018 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата Nikugorsk:
если новее, то лучше обновить PoSh до актуальной версии... |
|
------- Последний раз редактировалось YuS_2, 08-06-2018 в 07:35. Отправлено: 07:25, 08-06-2018 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Nikugorsk, Я не проверял код от Iska, уверен, он рабочий.
Вот еще вариант исполнимого vbs-скрипта.
InBox = "Z:\Box_In" ' Папка с файлами InExt = "txt" ' Расширение файлов для обработки ' -------------------------------- Set WArg = WScript.Arguments If Not WArg.Count = 0 Then InBox = WArg.Item(0) Set FSO = CreateObject("Scripting.FileSystemObject") On Error Resume Next Set InDir = FSO.GetFolder(InBox) If Err.Number <> 0 Then MsgBox "Ошибка при открытии " + CStr(Err.Number) + vbCrLf + vbCrLf + InBox + vbCrLf + vbCrLf + Err.Description WScript.Quit 2 End If BakBox = InDir + "\" + Replace(Replace(CStr(Now), ":", "-"), "/", ".") + ".bak" FSO.CreateFolder (BakBox) If Err.Number <> 0 Then MsgBox "Ошибка при создании " + CStr(Err.Number) + vbCrLf + vbCrLf + BakBox + vbCrLf + vbCrLf + Err.Description WScript.Quit 2 End If On Error GoTo 0 Set AllFiles = InDir.Files N = 0 For Each iFile In AllFiles ' Цикл по файлам в папке (как вариант решения) If UCase(FSO.GetExtensionName(iFile)) = UCase(InExt) Then With FSO.OpenTextFile(iFile, 1, False) AllTxt = .ReadAll .Close End With Do i1 = InStr(1, AllTxt, """") If i1 = 0 Then Exit Do i2 = InStr(i1, AllTxt, "_") If i2 = 0 Then Exit Do i3 = InStr(i2, AllTxt, "#") If i3 = 0 Then Exit Do i4 = InStr(i3, AllTxt, """") If i4 = 0 Then Exit Do ii = InDir + "\" + iFile.Name i = FSO.MoveFile(iFile, BakBox + "\" + CStr(iFile.Name)) With FSO.CreateTextFile(ii, True) .Write Mid(AllTxt, 1, i1) + Mid(AllTxt, i2 + 1, i3 - i2 - 1) + Mid(AllTxt, i4) .Close End With N = N + 1 Loop While False End If Next If N = 0 Then MsgBox "В папке" + vbCrLf + vbCrLf + InDir + vbCrLf + vbCrLf + "файлы для обработки не найдены" FSO.DeleteFolder BakBox, True WScript.Quit 1 Else Msg = "В папке" + vbCrLf + InDir + vbCrLf + "обработано " + CStr(N) + " файлов" MsgBox Msg + vbCrLf + vbCrLf + "исходные файлы в папке" + vbCrLf + BakBox WScript.Quit 0 End If Папку с исходными файлами можно указать явным образом в тексте скрипта, либо указать в аргументе при вызове, также можно просто перетащить папку на скрипт в Проводнике, при этом явное указание папки в коде скрипта будет проигнорировано. YuS_2, Помнится, WSH в Win XP уже был, и даже для него что-то дополнительно доустанавливать уже не нужно. |
------- Последний раз редактировалось megaloman, 08-06-2018 в 16:46. Отправлено: 16:39, 08-06-2018 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
![]() Цитата megaloman:
|
||
Отправлено: 18:10, 08-06-2018 | #13 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
А вообще, если будет больше вариантов решений той или иной задачи, разве это плохо? Что из этого разнообразия выбрать, решит сам ТС, да и другим, столкнувшимся с аналогичной проблемой, может пригодиться... Цитата Iska:
|
||
------- Отправлено: 18:32, 08-06-2018 | #14 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Нумерация строк в файле | ВиталийВ | Скриптовые языки администрирования Windows | 2 | 25-09-2015 19:06 | |
VBS/WSH/JS - Удаление строк в REG файле | gen0m.rsw | Скриптовые языки администрирования Windows | 7 | 10-10-2014 21:17 | |
CMD/BAT - Замена нескольких строк в файле | bcubbs@fb | Скриптовые языки администрирования Windows | 3 | 24-01-2013 14:01 | |
VBS/WSH/JS - Изменение времени строк в текстовом файле на определенную величину | RadioSys | Скриптовые языки администрирования Windows | 6 | 31-07-2012 20:22 | |
[решено] Количество строк в файле | 0xDEADBEEF | AutoIt | 3 | 25-01-2010 21:47 |
|