Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Замена строчки в bat файле на несколько других

Ответить
Настройки темы
[решено] Замена строчки в bat файле на несколько других

Аватара для ZeroCrash

Пользователь


Сообщения: 62
Благодарности: 1


Конфигурация

Профиль | Отправить 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,"Сообщение","Операция завершена")
Но у меня возникла потребность заменить 1 строчку батника на 3 строчки....подскажите что нужно подправить в скрипте, чтобы он стал способен на это?
Заранее благодарен!

-------
Я НЕвкотакте!


Отправлено: 12:27, 01-07-2009

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


ZeroCrash,

- у тебя замена не строки, а "фразы", которая может быть частью строки;
- формулируй точней: ЧТО (точное условие) и ЧЕМ заменить

Отправлено: 12:53, 01-07-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ZeroCrash

Пользователь


Сообщения: 62
Благодарности: 1

Профиль | Отправить 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
Благодарности: 1563

Профиль | Отправить 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
Благодарности: 1563

Профиль | Отправить PM | Цитировать


при отладке не мог понять, почему такой простой скрипт не всегда работает - оказалось, глючил текстовый редактор FAR - проставлял один CR вместо CRLF, на этот случай сваял команду "нормализации" текстового файла - все непарные CR/LF заменяются на корректную пару (можно вставлять в скрипт для надежности):
Код: Выделить весь код
$sText = StringRegExpReplace ($sText, "(?:\r\n|[\r\n])", @CRLF)
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:12, 02-07-2009 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Замена строчки в bat файле на несколько других

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] 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




 
Переход