|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Замена текста из другого файла |
|
VBS/WSH/JS - [решено] Замена текста из другого файла
|
Пользователь Сообщения: 122 |
Всем привет!
Решила снова прибегнуть к помощи форумчан ![]() Попробую описать подробно проблему. Есть папка (test) с файлами и подпапками, содержащими разные файлы. Созданы дополнительно два текстовых файла. Из первого файла берём образец (многострочный текстовый файл), т.е. то, что надо найти в файлах папок test. А второй файл это то, на что нужно заменить найденное. Хотелось бы, чтобы можно было задавать маску поиска (strMask = "*.txt") |
|
Отправлено: 01:58, 23-10-2012 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось ul9, 23-10-2012 в 02:08. Отправлено: 02:02, 23-10-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Нашла ещё вот такой скрипт, но опять-таки заменяет не из текстового файла
[cscript|wscript] replace.vbs Find Replacewith File Find … Required. Substring being searched for. Replacewith … Required. Replacement substring. File … Source and destination file for the replacement Dim FileName, Find, ReplaceWith, FileContents, dFileContents Find = WScript.Arguments(0) ReplaceWith = WScript.Arguments(1) FileName = WScript.Arguments(2) 'Read source text file FileContents = GetFile(FileName) 'replace all string In the source file dFileContents = replace(FileContents, Find, ReplaceWith, 1, -1, 1) 'Compare source And result if dFileContents <> FileContents Then 'write result If different WriteFile FileName, dFileContents Wscript.Echo "Replace done." If Len(ReplaceWith) <> Len(Find) Then 'Can we count n of replacements? Wscript.Echo _ ( (Len(dFileContents) - Len(FileContents)) / (Len(ReplaceWith)-Len(Find)) ) & _ " replacements." End If Else Wscript.Echo "Searched string Not In the source file" End If 'Read text file function GetFile(FileName) If FileName<>"" Then Dim FS, FileStream Set FS = CreateObject("Scripting.FileSystemObject") on error resume Next Set FileStream = FS.OpenTextFile(FileName) GetFile = FileStream.ReadAll End If End Function 'Write string As a text file. function WriteFile(FileName, Contents) Dim OutStream, FS on error resume Next Set FS = CreateObject("Scripting.FileSystemObject") Set OutStream = FS.OpenTextFile(FileName, 2, True) OutStream.Write Contents End Function |
Отправлено: 17:15, 23-10-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата ul9:
|
|
Отправлено: 18:52, 23-10-2012 | #4 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Вот, но это не мой пример. Просто всегда текст (заменяемый) разный и выкладывать конкретный случай не имеет смысла. Я для каждой замены продублирую скрипт со своими заменами. В архиве заменять нужно в фале html, но иногда также приходится заменять и в файлах яваскрипта, не затрагивая html. Поэтому хотелось бы, чтобы можно было выбирать тип файла (html, js..)
|
|
Отправлено: 19:22, 23-10-2012 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать ul9, тип файла не важен. Важна кодировка. Особенно желательно, чтобы она совпадала у тех файлов, в которых ищем, так и у тех файлов, которые используются в качестве источников фрагментов поиска и замены. В приведённом Вами примере это не так: «work.htm» имеет кодировку windows-1251, а «Найти это.txt» и «заменить этим.txt» — UTF-8, да ещё и без BOM. Что, при наличии во фрагменте поиска кирилицы в приведённом примере делает невозможным простой поиск и замену.
Что скажете? |
Отправлено: 22:51, 23-10-2012 | #6 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Всё поняла. Все файлы будут в UTF-8 без BOM.
«Найти это.txt» и «заменить этим.txt» тоже сохраню в нужной кодировке, так как они делаются руками. А вот файлы, в которых нужно работать, приходят в UTF-8 без BOM. И я ещё хотела бы уточнить, возможен будет такой вариант, чтобы при пустом файле «заменить этим.txt» в файле «work.htm» просто удалялся фрагмент кода, заданный в «Найти это.txt»? |
Отправлено: 23:01, 23-10-2012 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата ul9:
Цитата ul9:
Как осуществляем замену: переписываем содержимое файла новым содержимым (с произведённой заменой) поверх, без резервной копии, так? |
||
Отправлено: 23:06, 23-10-2012 | #8 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Цитата Iska:
![]() |
|
Отправлено: 23:10, 23-10-2012 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Ну, вот, в первом приближении:
|
Отправлено: 23:54, 23-10-2012 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Замена текста в txt | Starter1 | Скриптовые языки администрирования Windows | 17 | 04-08-2022 18:26 | |
CMD/BAT - [решено] Поиск и замена текста | ajakzs | Скриптовые языки администрирования Windows | 18 | 08-08-2013 16:10 | |
2007 - [решено] Word вставка одного текста вместо другого | 3DpacTe | Microsoft Office (Word, Excel, Outlook и т.д.) | 5 | 11-05-2012 14:36 | |
.NET - [решено] Получение Текста Из Edita Другого Приложения ( C# ) | LilLoco | Программирование и базы данных | 1 | 28-06-2010 13:12 | |
Офис и Текст - Замена текста | Котяра | Программное обеспечение Windows | 1 | 29-09-2008 13:51 |
|