|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Изменение строк в файле |
|
|
CMD/BAT - Изменение строк в файле
|
Новый участник Сообщения: 4 |
Добрый день! Решил усложнить себе жизнь и начать оптимизировать некоторые процессы. Поэтому буду премного благодарен за ответ с комментариями, что где и почему пишем) Задача: в папке сложены Файлы 1, 2, 3... 1000. Формат txt. В этих файлах есть текст. Во всех разный. При этом есть строка (чаще первая) в которой написано «ааа_1#0», где 1 это число которое необходимо оставить, а все остальное надо (что в ковычках) надо удалить. Как это сделать через исполнительный файл, ибо файликов таких очень много??? Количество символов в ковычках всегда разное. Нужная комбинации всегда окружена _ и #
|
|
Отправлено: 15:32, 07-06-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Nikugorsk, упаковываете несколько таких файлов в архив, который прилагаете к сообщению. Дальше смотрим.
|
Отправлено: 15:41, 07-06-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 16:42, 07-06-2018 | #3 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Nikugorsk,
нужны файлы с разным содержимым или если знаете неплохо содержимое, есть ли в файле строка(и) с похожим содержимым кроме этой строки: 7,2 "Центр_1664#0", т.е если искать по символу _ или # или обеим или по кавычкам - гарантированно будет найдена только одна эта строка? |
Отправлено: 17:43, 07-06-2018 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать И ещё, к словам коллеги: случайно ли то, что искомые цифры в файле совпадают с именем файла?
|
|
Отправлено: 17:53, 07-06-2018 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать На WSH:
Скрытый текст
Option Explicit Dim strSourceFolder Dim objFSO Dim objFile Dim objRegExp Dim strContent If WScript.Arguments.Count = 1 Then strSourceFolder = WScript.Arguments.Item(0) Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If objFSO.FolderExists(strSourceFolder) Then Set objRegExp = WScript.CreateObject("VBScript.RegExp") With objRegExp .Pattern = "^(.+ "")(?:.+_)(\d+)(?:#)(.+"")$" .Global = True .MultiLine = True End With For Each objFile In objFSO.GetFolder(strSourceFolder).Files If StrComp(objFSO.GetExtensionName(objFile.Name), "txt", 0) = 0 Then With objFSO.OpenTextFile(objFile.Path) strContent = .ReadAll() .Close End With If objRegExp.Test(strContent) Then objFSO.CopyFile objFile.Name, objFSO.GetBaseName(objFile.Name) & ".bak", True With objFSO.CreateTextFile(objFile.Name, True) .Write objRegExp.Replace(strContent, "$1$2$3") .Close End With Else ' Nothing to do End If Else ' Nothing to do End If Next Set objRegExp = Nothing Else WScript.Echo "Can't find source folder [" & strSourceFolder & "]." WScript.Quit 2 End If Set objFSO = Nothing Else WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source folder>" WScript.Quit 1 End If WScript.Quit 0 Исходная папка указывается аргументом скрипта (также можно просто перетащить папку на скрипт в Проводнике). Будут обработаны все *.txt файлы из указанной папки. При нахождении шаблона в содержимом текстового файла и последующей замене делается резервная копия исходного файла с расширением .bak. Согласно изложенным Вами выше правилам поиска и замены в выложенных для примера файлах произойдут следующие замены — в 1657.txt: на: и в 1664.txt: на: |
Отправлено: 18:31, 07-06-2018 | #6 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Да, гарантированно найдётся только эта строка. По любому из 3х признаков. Цитата Iska:
Цитата Iska:
|
|||
Отправлено: 20:11, 07-06-2018 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 20:18, 07-06-2018 | #8 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата Nikugorsk:
script.ps1 dir *.txt -file|%{ (gc $_.fullname -enc default) -replace '(?<=\")[^_]*_|#[^"]*(?=\")'|` set-content ($_.fullname) -enc default } run.bat |
|
------- Отправлено: 20:29, 07-06-2018 | #9 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
||
Отправлено: 07:08, 08-06-2018 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|