|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Замена строчки в bat файле на несколько других |
|
[решено] Замена строчки в bat файле на несколько других
|
Пользователь Сообщения: 62 |
Профиль | Отправить PM | Цитировать Вот код скрипта, который заменяет одну строчку батника на другую (по вашему усмотрению):
#Include <File.au3> $FileList = _FileListToArray(@ScriptDir, "*.bat",1);создаём массив со списком всех bat файлов. For $i = 1 to $FileList[0]; крутим цикл, столько раз, сколько у нас файлов $File = FileOpen (@ScriptDir&"\"&$FileList[$i], 0);открыть для чтения $File_text = FileRead ($File);читаем файл FileClose ($File);закрываем ;Заменяем в тексте искомую строку на нашу $File_new_text = StringReplace ($File_text, "искомая строка", "на которую нужно заменить") $File = FileOpen (@ScriptDir&"\"&$FileList[$i], 2);открыть для записи и удалить имеющееся содержание FileWrite ($File, $File_new_text); пишем изменённый текст в файл FileClose ($File);закрываем Next MsgBox(0,"Сообщение","Операция завершена") Заранее благодарен! |
|
------- Отправлено: 12:27, 01-07-2009 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать ZeroCrash,
- у тебя замена не строки, а "фразы", которая может быть частью строки; - формулируй точней: ЧТО (точное условие) и ЧЕМ заменить |
Отправлено: 12:53, 01-07-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Заменить надо именно строку.
Допустим надо заменить chcp 1251 на echo ------------------------------------------->>%randomValue%.txt echo ------------------------------------------->>%randomValue%.txt echo ------------------------------------------->>%randomValue%.txt |
------- Последний раз редактировалось ZeroCrash, 01-07-2009 в 13:04. Причина: Не полную информацию указал Отправлено: 13:03, 01-07-2009 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать ZeroCrash, вариант для "правильных" файлов (все строки заканчиваются на CRLF)
#Include <File.au3> $sFrom = "chcp 1251" $sTo = "echo ------------------------------------------->>%randomValue%.txt" &@CRLF& _ "echo ------------------------------------------->>%randomValue%.txt" &@CRLF& _ "echo ------------------------------------------->>%randomValue%.txt" $FileList = _FileListToArray(@ScriptDir, "*.cmd", 1) ; создаём массив со списком всех bat файлов. For $i=1 to $FileList[0] ; крутим цикл, столько раз, сколько у нас файлов $r = _FileLinesReplace(@ScriptDir&"\"& $FileList[$i], $sFrom, $sTo) ConsoleWrite("Обработан файл: "& $FileList[$i] &" произведено замен: "& $r &@CRLF) Next ; ----------------------------------------- ; Пользовательская функция (UDF) ; Замена в файле $sFile строки ; с текстом $sFrom на строку/строки $sTo ; ----------------------------------------- Func _FileLinesReplace($sFile, $sFrom, $sTo) Local $sText, $hFile, $iRepl $sFrom = @CRLF& $sFrom $sTo = @CRLF& $sTo $sText = @CRLF& FileRead($sFile) $hFile = FileOpen (@ScriptDir&"\"&$FileList[$i], 2) $sText = StringReplace($sText, $sFrom, $sTo) $iRepl = @extended $sText = StringTrimLeft($sText, 2) FileWrite ($hFile, $sText) FileClose ($hFile) Return $iRepl EndFunc ; ==> _FileLinesReplace |
Последний раз редактировалось amel27, 02-07-2009 в 04:04. Причина: мелкая оптимизация Отправлено: 14:32, 01-07-2009 | #4 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать при отладке не мог понять, почему такой простой скрипт не всегда работает - оказалось, глючил текстовый редактор FAR - проставлял один CR вместо CRLF, на этот случай сваял команду "нормализации" текстового файла - все непарные CR/LF заменяются на корректную пару (можно вставлять в скрипт для надежности):
|
|
Отправлено: 04:12, 02-07-2009 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] FoxPro 2.6 Замена фрагментов текста в txt-файле | Pashka | Программирование и базы данных | 7 | 18-01-2010 19:20 | |
CMD/BAT - [решено] замена строчки в файле | Bint | Скриптовые языки администрирования Windows | 4 | 15-10-2009 10:24 | |
CMD/BAT - [решено] Работа с 7z.exe в bat\cmd файле | Medic84 | Скриптовые языки администрирования Windows | 5 | 13-10-2009 15:35 | |
CMD/BAT - [решено] Отделить последние цифры из строчки в текстовом файле | ZeroCrash | Скриптовые языки администрирования Windows | 4 | 29-06-2009 16:03 | |
Редактирование строчки в файле | slaine | Вебмастеру | 5 | 10-08-2005 00:36 |
|