|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Замена слов из списка |
|
|
VBS/WSH/JS - [решено] Замена слов из списка
|
Пользователь Сообщения: 101 |
Профиль | Отправить PM | Цитировать Здравствуйте,
есть файл list.txt, который содержит в себе 3 строки, всегда разные, вот пример одного из файлов Эту информацию нужно распределить по файлам в определённое место. Грубо говоря найти слово "_something_" и заменить это слово на первую строку из файла list.txt, найти "_something2_" и заменить на вторую строку из файла и т.д. Можно ли как-нибудь с помощью скрипта пробежаться по файлам в папке, включая подпапки, найти эти "анкоры" и заменить текст? |
|
Отправлено: 22:02, 21-06-2012 |
Старожил Сообщения: 210
|
Профиль | Отправить PM | Цитировать Можно, но нужно знать критерий, согласно которому выполняется замена.
|
Отправлено: 07:05, 22-06-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 101
|
Профиль | Отправить PM | Цитировать Цитата DmitriiV:
_something1_ => someaddress(@)mail.ru (1 строчка из списка) _something2_ => тел. 43242342 (2 строчка из списка) _something3_ => ул.Красная 10 Караганда (3 строчка из списка) Либо же напрямую обращаться к файлу, прописав путь. |
|
Отправлено: 13:41, 22-06-2012 | #3 |
Старожил Сообщения: 210
|
Профиль | Отправить PM | Цитировать 1. По-моему, задачи из Ваших сообщений не идентичны.
2. Что значит: "Либо же напрямую обращаться к файлу, прописав путь"? |
Отправлено: 17:00, 22-06-2012 | #4 |
Пользователь Сообщения: 101
|
Профиль | Отправить PM | Цитировать Задачи идентичны. Просто немного переформулированы.
Цитата DmitriiV:
|
||
Отправлено: 17:33, 22-06-2012 | #5 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать Option Explicit Dim objFSO Dim objShApp Dim objWshSh Dim strMask Dim CurrFolderPath Dim strFileP Dim OpenFile Dim nLine Dim strLine(2) Dim strRepl(2) Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objShApp = WScript.CreateObject("Shell.Application") Set objWshSh = CreateObject("WScript.Shell") ' поместите файл скрипта в каталог, который нужно обработать CurrFolderPath = objWshSh.CurrentDirectory ' маска обрабатываемых файлов strMask = "*.txt; *.htm" ' файл-образец для замены strFileP = "z:\list.txt" ' заменяемые выражения strRepl(0) = "_something1_" strRepl(1) = "_something2_" strRepl(2) = "_something3_" Set OpenFile = objFSO.OpenTextFile(strFileP, 1) Do Until OpenFile.AtEndOfStream = True Or nLine = 2 nLine = OpenFile.Line - 1 strLine(nLine) = OpenFile.ReadLine Loop OpenFile.Close If nLine < 2 Then MsgBox "Некорректный файл-образец" Else GetFiles objFSO.GetFolder(CurrFolderPath) End If Set objFSO = Nothing Set objShApp = Nothing Set objWshSh = Nothing MsgBox "Скрипт завершил обработку каталога" WScript.Quit Sub GetFiles(objFolder) Dim SubFolderItem ReplaceTextToFiles(objFolder.Path) For Each SubFolderItem In objFolder.SubFolders GetFiles SubFolderItem Next End Sub Sub ReplaceTextToFiles(strPath) Dim arrFiles Dim i, n Dim strItemFile Dim strText Set arrFiles = objShApp.NameSpace(strPath).Items arrFiles.Filter 192, strMask For i = 0 To arrFiles.Count - 1 strItemFile = arrFiles.Item(i).Path Set OpenFile = objFSO.OpenTextFile(strItemFile, 1) strText = OpenFile.ReadAll OpenFile.Close For n = 0 To 2 strText = Replace(strText, strRepl(n), strLine(n), 1, -1, 1) Next Set OpenFile = objFSO.OpenTextFile(strItemFile, 2) OpenFile.Write strText OpenFile.Close Next End Sub |
Последний раз редактировалось SendMessage, 24-06-2012 в 08:39. Причина: Добавлен финальный MsgBox Отправлено: 08:31, 24-06-2012 | #6 |
Пользователь Сообщения: 101
|
Профиль | Отправить PM | Цитировать Большое спасибо! То что надо!
Этот скрипт ограничен только 3 заменами, а можно добавить strRepl(3) = "_something4_" для четвёртой замены или этого мало и нужно будет ещё корректировать скрипт? |
Последний раз редактировалось aggressor_, 25-06-2012 в 20:16. Отправлено: 15:46, 25-06-2012 | #7 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать Цитата aggressor_:
|
|
Отправлено: 01:14, 26-06-2012 | #8 |
Пользователь Сообщения: 101
|
Профиль | Отправить PM | Цитировать Если я верно понял, то теперь можно просто менять значение nReplaceItems = ... и добавлять strRepl(...) = "..." столько, сколько мне нужно? Никаких ограничений на символы нет в заменяемом тексте?
|
Отправлено: 01:18, 26-06-2012 | #9 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать Насчет ограничений на символы не очень понял.
В остальном - да. Но не стоит выходить за рамки количества нужных строк в файле-образце. |
Отправлено: 01:26, 26-06-2012 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Словарь непонятных слов по ИТ | Blast | Хочу все знать | 200 | 30-10-2016 21:46 | |
.NET - Замена 2х-3х подряд идущих слов одним | Marsella_88 | Программирование и базы данных | 11 | 01-06-2012 09:08 | |
CMD/BAT - перестановка слов или число размещений из списка. Комбинаторика. | MaximvsIT | Скриптовые языки администрирования Windows | 5 | 20-03-2012 18:37 | |
Замена e7400 на q8400, нужна ли замена БП? | Lehich22 | Выбор отдельных компонентов компьютера и конфигурации в целом | 3 | 24-12-2011 21:06 | |
Программы - Отображение слов в WMP | Олег97 | Оформление Windows XP | 1 | 04-08-2010 08:15 |
|