Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Замена слова в строчках текстового файла (http://forum.oszone.net/showthread.php?t=260342)

Bruce Wayne 11-05-2013 20:40 2148238

Замена слова в строчках текстового файла
 
Доброе время суток!

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

Код:

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 2148252

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 2148297

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

Foreigner 11-05-2013 22:35 2148313

Bruce Wayne,
Обязательно включить отложенное расширение переменных
Код:

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

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

Bruce Wayne 11-05-2013 22:39 2148316

Foreigner, спасибо большое! Всё работает!)


Время: 23:51.

Время: 23:51.
© OSzone.net 2001-