В общем случае штатными средствами не решается. Но можно поизвращаться либо через доп. утилиты, либо для каких-то конкретных частных случаев. Например, для INI-файла (где "test substr" находится справа от знака равенства, а слева - заранее известная константа) задача решается без проблем. Если файл является "почти" INI-файлом (т.е. содержит строки вида
имя=значение, но без секций в квадратных скобках; и порядок строк не важен), то задача решается штатными средствами в несколько ходов (добавляем в начало файла имя секции - делаем изменения получившегося INI-файла - убираем заранее известную строку с именем секции).
Вариант же с доп. утилитой (
ссылку на AutoIt я приводил) может быть, например, таким:
- Код: Выделить всё
$SEARCHSTRING = "test substr"
$REPLACESTRING = "Another String"
$FILE = "c:\gde-to-tam\file.test"
Opt("WinTitleMatchMode", 1)
Run ("notepad " & $FILE)
WinWaitActive ("- Notepad")
While 1
Send ("^f" & $SEARCHSTRING & "{Enter}")
$res = WinWaitActive ("Notepad", "Cannot find", 1)
if $res = 1 Then ExitLoop
Send ("{ESCAPE}{HOME}+{END}" & $REPLACESTRING)
Wend
Send ("{Enter}{Escape}^s!{F4}")
WinWaitClose ("- Notepad")