Войти

Показать полную графическую версию : [решено] Замена слова в строчках текстового файла


Bruce Wayne
11-05-2013, 20:40
Доброе время суток!

Подскажите, пожалуйста, я столкнулся с такой проблемой: имеется код


for /f "tokens=*" %%a in ('more^<log.txt') do call :_replace %%a

:_replace
set i=%*
set i=%i:guid=7A30D018-A716-19FA-BFC1-08002BE10318%
pause
echo %i%>>new.txt
goto eof
:eof

Но дело в том, что слово guid нужно заменять всё время на разные значения, которые хранятся в перезаписываемой переменной %guid%, а вставить сюда именно переменную не удаётся никак. Я уже всё перепробовал, все обманки, но ничего не вышло... Возможно вообще такое? Хотелось бы оставить именно такой код, так как он лучше всего подходит по скорости, удобству и читаемости. Заранее спасибо!)

Foreigner
11-05-2013, 21:04
Bruce Wayne,

Пример

@echo off
setlocal enabledelayedexpansion

set "guid=test"
set "var=test_guid_test"

echo %var%

set var=!var:guid=%guid%!

echo %var%

Bruce Wayne
11-05-2013, 22:15
Foreigner, не подходит, замена не произойдёт, будет просто полное замещение строчки на данную переменную var, которая получается равной !var:guid=test!. Или я что-то не так понял? Что Вы имели в виду?

Foreigner
11-05-2013, 22:35
Bruce Wayne,
Обязательно включить отложенное расширение переменных

setlocal enabledelayedexpansion

И можно использовать переменную %guid% в конструкции подстановки:

set var=!var:replaced string=%guid%!

Но это не панацея, так как есть подводные камни, в случае если переменная %guid% содержит непечслужебные символы "%", "!" и "="

Bruce Wayne
11-05-2013, 22:39
Foreigner, спасибо большое! Всё работает!)




© OSzone.net 2001-2012