Компьютерный форум 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=204529)

emekhedova 11-04-2011 20:28 1656017

теряется "!" при копировании строк
 
заменяю в файле myfile.txt ААА на ВВВ вот таким образом

Код:

set context=AAA
set replace=BBB
setlocal EnableDelayedExpansion
set tmpfile=1.tmp
copy nul %tmpfile%
for /F "usebackq delims==" %%s in (myfile.txt) do (
        set string=%%s
        set string=!string:%context%=%replace%!
        echo !string!>>%tmpfile%
)
move /y %tmpfile% myfile.txt

проблема в том, что в этом файле есть строка
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)

после копирования она превращается в
#if defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
(без восклицательного знака!!!)

это очень печально, так как я ВООБЩЕ не знаю как это забороть
помогите пожалуйста!

amel27 11-04-2011 20:39 1656030

Цитата:

Цитата emekhedova
не знаю как это забороть »

перенести SETLOCAL/ENDLOCAL в цикл:
Код:

set context=AAA
set replace=BBB
set tmpfile=1.tmp
copy nul %tmpfile%
for /F "usebackq delims==" %%s in (myfile.txt) do (
 set string=%%s
 SETLOCAL EnableDelayedExpansion
 set string=!string:%context%=%replace%!
 echo !string!>>%tmpfile%
 ENDLOCAL
)
move /y %tmpfile% myfile.txt


emekhedova 11-04-2011 20:45 1656037

ОЙ!!!
Счастье то какое!!!
СПАСИБО!!!!

yurfed 11-04-2011 20:49 1656042

Цитата:

Цитата emekhedova
ОЙ!!!
Счастье то какое!!!
СПАСИБО!!!! »

Спасибо человеку скажите. Просто нажмите под его постом "Полезное сообщение". Это займёт пару секунд.
Вам пустяк, а человеку приятно


Время: 08:43.

Время: 08:43.
© OSzone.net 2001-