Войти

Показать полную графическую версию : [решено] теряется "!" при копировании строк


emekhedova
11-04-2011, 20:28
заменяю в файле 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
не знаю как это забороть »
перенести 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
ОЙ!!!
Счастье то какое!!!
СПАСИБО!!!!

yurfed
11-04-2011, 20:49
ОЙ!!!
Счастье то какое!!!
СПАСИБО!!!! »
Спасибо человеку скажите. Просто нажмите под его постом "Полезное сообщение". Это займёт пару секунд.
Вам пустяк, а человеку приятно




© OSzone.net 2001-2012