|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Нужно быстро (!) добавить/удалить строку во все файлы указанной директории |
|
Любой язык - Нужно быстро (!) добавить/удалить строку во все файлы указанной директории
|
Новый участник Сообщения: 2 |
Профиль | Отправить PM | Цитировать Нужно быстро (!) добавить/удалить строку во все файлы указанной (жестко- в тексте самого скрипта) директории и всех поддиректорий.
Строка должна быть добавлена в начало файла. Файлы текстовые, но имеющие отличное от txt расширение. |
|
Отправлено: 20:27, 16-09-2009 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Possessed:
|
|
Отправлено: 11:07, 18-09-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать 1) Добавить нужную строку в начало файла
2) Произвести некоторые действия с целевым файлом (это уже не средствами бат файла ) 2) Удалить добавленную в шаге один строку из начала файла То есть - нужны два батника, один из которых добавляет, а второй удаляет нужную строку. |
Отправлено: 07:33, 19-09-2009 | #3 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата Possessed:
|
|
Отправлено: 22:13, 19-09-2009 | #4 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать Вот решение проблемы с помощью VBS - скрипта. Копируйте приведенный код в блокнот, сохраните в файл с расширением vbs, например, InsAndDel_xxx.vbs, запускайте как любой исполнимый файл.
Скрипт может вставить строку в указанное место, удалить указанную строку. В скрипте надо прописать Ваши: Директорию Текст вставляемой строки Номер новой строки после вставки в текст Номер удаляемой строки Если номер вставляемой строки = номеру удаляемой, то строка заменяется Вы можете сохранить скрипт с разными настройками под разными именами и последовательно их запускать. ' Позволяет 1) Добавить строку в указанную строку всех текстовых файлов директории и поддиректорий ' 2) Удалить указанную по счету строку в текстовых файлах директории и поддиректорий ' Предполагается, что, кроме текстовых файлов, в директориях иных файлов нет ' Исходные данные ------------------------------------------------------- iDir = "D:\Всякая дребедень" ' Директория где обрабатываем файлы inStrok = "Добавляемая строка 1" ' Текст добавляемой новой строки NinStrok = 1 ' Номер строки в файлах, куда вставим новую строку (если <=0 (или номер строки в файле за его пределами) то не вставляем) NoutStrok = 1 ' Номер удаляемой строки в исходном файле (если <=0 (или номер строки в файле за его пределами) то не удаляем) ' ------------------------------------------------------------------------- Call AllFolders(iDir, inStrok, NinStrok, NoutStrok) ' ************************************************************************* Sub AllFolders(iiDir, iinStrok, iNinStrok, iNoutStrok) ' --------------------------------------------- Call Ins_Del(iiDir, iinStrok, iNinStrok, iNoutStrok) Set FSO = CreateObject("Scripting.FileSystemObject") On Error Resume Next Set F = FSO.GetFolder(iiDir) If Err.Number = 0 Then Set SubF = F.SubFolders For Each Folder In SubF Call AllFolders(iiDir + "\" + Folder.Name, iinStrok, iNinStrok, iNoutStrok) Next Else a = MsgBox(iiDir + Chr(13) + Chr(10) + Err.Description, 0, "Неудачное открытие папки") End If End Sub Sub Ins_Del(iiDir, iinStrok, iNinStrok, iNoutStrok) ' --------------------------------------------- Set FSO = CreateObject("Scripting.FileSystemObject") Set F = FSO.GetFolder(iiDir) Set Files = F.Files For Each ff In Files ' a = MsgBox(iiDir + "\" + ff.Name) Set tFile = FSO.OpenTextFile(iiDir + "\" + ff.Name, 1) inText = tFile.ReadAll() inText = Replace(inText, Chr(10), "") Mass = Split(Replace(inText, Chr(10), ""), Chr(13)) inText = "" tFile.Close iBeg = LBound(Mass) iEnd = UBound(Mass) ' a = MsgBox(iiDir + "\" + ff.Name + " " + CStr(iBeg) + " " + CStr(iEnd)) Set tFile = FSO.OpenTextFile(iiDir + "\" + ff.Name, 2) For i = iBeg To iEnd If i + 1 = iNinStrok Then If i <> iEnd Then tFile.WriteLine iinStrok Else tFile.Write iinStrok End If End If If i + 1 <> iNoutStrok Then If i <> iEnd Then tFile.WriteLine Mass(i) Else tFile.Write Mass(i) End If End If Next tFile.Close Next End Sub ' Позволяет 1) Добавить строку в указанную строку всех текстовых файлов директории и поддиректорий ' 2) Удалить указанную по счету строку в текстовых файлах директории и поддиректорий ' Предполагается, что кроме текстовых файлов в директориях нет ' Аргументы ------------------------------------------------------------------------------------- ' inStrok ' Текст добавляемой новой строки ' NinStrok ' Номер строки в файлах, куда вставим новую строку (если <=0 (или номер строки в файле за его пределами) то не вставляем) ' NoutStrok ' Номер удаляемой строки в исходном файле (если <=0 (или номер строки в файле за его пределами) то не удаляем) ' Исходные данные ------------------------------------------------------------------------------ iDir = "D:\Всякая дребедень" ' Директория где обрабатываем файлы ' ------------------------------------------------------------------------------------------------ Set Arg = WScript.Arguments if Arg.Count = 3 Then inStrok = Arg(0) NinStrok = Arg(1)*1 NoutStrok = Arg(2)*1 Call AllFolders(iDir, inStrok, NinStrok, NoutStrok) Else a = MsgBox("Количество аргументов должно быть равно 3, а указано " + CStr(Arg.Count)) End If то Ваша задача сведётся к вызову скрипта с разным набором параметров Вставим в начало строку InsAndDel.vbs "У попа была собака" 1 0 Удалим первую строку InsAndDel.vbs "" 0 1 Естественно, можно это проделывать с любой другой строкой. Как Вам было нужно, это проделывается для всех файлов в директории и поддиректориях, прописанных в скрипте. Предполагается, что там содержатся только текстовые файлы с произвольным расширением. Подозреваю, что то, что Вы делаете с файлами между вставкой-удалением строк можно тоже проделать в скрипте. |
|
Отправлено: 01:20, 20-09-2009 | #5 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать А у меня не много другая задача, нужно вставить строки в определенные разделы, не поможете?
Нужно вставить в раздел [EntryKey] еще одну строчку Item99=, а в [Router2] Item99=xxx например, впрочем можно просто повторить скрипт для каждого раздела. [EntryKey] Item1= Item2= Item3= Item4= [Router2] Item1= Item2= Item3= Item4= |
Отправлено: 15:43, 04-10-2011 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Birdimson, если у Вас именно INI-файл, то надёжнее и проще всего использовать методы «.Ini*()» объекта AutoItX.
|
Отправлено: 22:29, 04-10-2011 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Добавить строку в VBS скрипт | antonhacktm | Скриптовые языки администрирования Windows | 5 | 14-12-2009 18:40 | |
Интерфейс - [решено] Нужно отобразить все пустые папки в директории | Третий | Microsoft Windows 7 | 1 | 24-08-2009 22:17 | |
Как удалить все временный файлы (уже после перезагрузки компа)...? | Cobra_1_Stas | Автоматическая установка Windows 2000/XP/2003 | 4 | 01-04-2008 07:14 | |
[решено] как добавить путь к текущей директории в reg файл из bat файла ? | mitiya | Автоматическая установка приложений | 7 | 27-03-2008 16:12 | |
Поиогите Удалить две директории | t0lkman | Microsoft Windows 2000/XP | 9 | 25-06-2007 10:00 |
|