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

emekhedova 07-04-2011 01:00 1652631

как найти файлы в каталоге, которые НЕ содержат в названии шаблон
 
Задача такая:
в каталоге и его подкаталогах есть файлы
бла-бла.rc и бла-бла_manifest.rc

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

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

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

emekhedova 07-04-2011 19:26 1653238

неужели никто не знает?
или это слишком просто?

kiripanda 07-04-2011 21:36 1653324

Код:

@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 1653846

УХ ТЫ!!!
спасибо большое!
буду разбираться!

emekhedova 09-04-2011 17:17 1654714

вот так можно заменить строку в файле, не трогая другие строки
например, меняем Маня на Ваня

Код:

@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 1654744

Что значит "не трогая другие строки" ? Не трогая другие слова?

Проверьте на таком тексте
Код:

Следующая строка пустая:

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



Время: 14:35.

Время: 14:35.
© OSzone.net 2001-