Страница 1 из 1

Задачка для знатоков ZfD

СообщениеДобавлено: 08 фев 2005, 16:31
skoltogyan
Есть ТЕКСТОВЫЙ файл.
c:\gdetotem\file.test

Надо:
1. Найти в этом файле СТРОКУ, содержащую подстроку:
"test substr"
2. И заменить в этом файле найденную строку на строку:
"absolutno novaya stroka vzamen najdennoj"

как такое сделать можно при помощи ZEN for Desktop ?

СообщениеДобавлено: 08 фев 2005, 20:34
Багинский Константин
Написанием скрипта, например на vbs и запуском его через zen. Сам zen своими внутренними средствами такого не позволит сделать. Не его задача.

СообщениеДобавлено: 08 фев 2005, 20:35
Константин Ошмян
В общем случае штатными средствами не решается. Но можно поизвращаться либо через доп. утилиты, либо для каких-то конкретных частных случаев. Например, для 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")