Войти

Показать полную графическую версию : [решено] как найти файлы в каталоге, которые НЕ содержат в названии шаблон


emekhedova
07-04-2011, 01:00
Задача такая:
в каталоге и его подкаталогах есть файлы
бла-бла.rc и бла-бла_manifest.rc

нужно ТОЛЬКО в файлах бла-бла.rc заменить строчку
VALUE "ProductName", ""
на строчку
VALUE "ProductName", "autobuild"

У меня возникло 2 проблемы:
1) как выбрать файлы бла-бла.rc и отсечь бла-бла_manifest.rc?
2) можно ли вообще силами CMD/BAT заменить значение в файле?

Заранее Спасибо.

emekhedova
07-04-2011, 19:26
неужели никто не знает?
или это слишком просто?

kiripanda
07-04-2011, 21:36
@echo off &chcp 1251 >nul
for /f "delims=" %%f in ('dir /b/s *.rc ^|findstr /vec:"_manifest.rc"') do call :c "%%f"
goto :eof

:c
for /f "skip=2 tokens=1,* delims=]" %%r in ('find /v /n "" %1') do (
if "%%s"=="VALUE "ProductName", """ (
>>"%~1.tmp" echo VALUE "ProductName", "autobuild"
) else (>>"%~1.tmp" echo.%%s)
)
move /y "%~1.tmp" %1
goto :eof

emekhedova
08-04-2011, 14:12
УХ ТЫ!!!
спасибо большое!
буду разбираться!

emekhedova
09-04-2011, 17:17
вот так можно заменить строку в файле, не трогая другие строки
например, меняем Маня на Ваня


@echo off
set cоntext=Маня
set replace=Ваня
setlocal EnableDelayedExpansion
copy nul 5.out
for /F "delims=" %%s in (5.txt) do (
set string=%%s
set string=!string:%cоntext%=%replace%!
echo !string!>>5.out
)
move 5.out 5.txt
)

kiripanda
09-04-2011, 18:20
Что значит "не трогая другие строки" ? Не трогая другие слова?

Проверьте на таком тексте
Следующая строка пустая:

А здесь был ! знак




© OSzone.net 2001-2012