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

nbafree 26-10-2012 12:46 2012519

Поиск и изминение строк в файле
 
Зравствуйте .Нужна помошь в написании батника ,
который будет в файле acces.txt искать строку "group_of_users = rw"менять ее на "group_of_users = r"

sov44 26-10-2012 15:12 2012660

nbafree, поиск рулит http://forum.oszone.net/post-1404643-13.html

nbafree 26-10-2012 18:43 2012793

я как-то читал что есть такая команда munge но в хелпе ее нет.
Извините за наглость но могли бы вы добавить к коментарии (что в этом скрипте поисходит детально) к скрипту http://forum.oszone.net/post-1404643-13.html
с синтаксисом я не знаком.
Буду весьма вам признателен!

sov44 26-10-2012 21:08 2012888

Цитата:

Цитата nbafree
но могли бы вы добавить к коментарии »

Попробую. Даже интересно себя проверить . Надеюсь ГУРУ меня поправят, если я что-то не так понял :)
Код:

@Echo Off

rem передать в блок REPLINE основные данные
CALL :REPLINE "acces.txt" "group_of_users = rw" "group_of_users = r"
pause
Exit /B 0

:REPLINE
rem если не найден файл acces.txt, скрипт завершает работу
 If Not Exist "%~1" Exit /B 1
rem если найден временный файл, он удаляется
 If Exist "%~dpn1.tmp" DEL /F/Q "%~dpn1.tmp"

rem номер первой строки 0
 Set $N=0
rem ищем номер строки текста "group_of_users = rw" в начале строки, без учёта регистра, как регулярное значение
rem и присваиваем ей переменную $N
 For /F "Delims=:" %%i In ('FindStr /BINRC:" *%~2" "%~1"') Do Set $N=%%i
rem если номер строки не равен нулю, ищем номер строки текста "group_of_users = rw" в конце строки, как регулярное значение
rem <далее требуется уточнение гуру :)>
rem если текст "group_of_users = rw" нашелся на строке (с начала и с конца) то
If %$N% NEQ 0 For /F "Tokens=1* Delims=:" %%i In ('FindStr /ENRC:"$" "%~1"') Do If "%%i"=="%$N%" (
rem Записываем "group_of_users = r" на номер найденной строки временного файла 1.tmp
rem все иные строки, где не найден "group_of_users = rw" записываются на такие же номера строк временного файла 1.tmp
 Echo %~3>>"%~dpn1.tmp" ) ELSE Echo.%%j>>"%~dpn1.tmp"

rem если найден временный файл и файл acces.txt, удаляется acces.txt
 If Exist "%~dpn1.tmp" If Exist "%~1" DEL /F/Q "%~1"
rem если найден временный файл 1.tmp, он переименовывается в acces.txt
 If Exist "%~dpn1.tmp" REN "%~dpn1.tmp" "%~nx1"
rem работа блока закончена, возвращаемся к команде pause
Exit /B 0



Время: 16:29.

Время: 16:29.
© OSzone.net 2001-2025