![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как добавить текст в середину текстрового файла |
|
CMD/BAT - Как добавить текст в середину текстрового файла
|
Новый участник Сообщения: 9 |
Есть текстовый файл 1.txt:
__________________________ aaa [paste] ccc __________________________ К примеру [paste] нужно заменить на bbb, при этом пустые строки должны остаться (FOR /F не помог) |
|
Отправлено: 09:54, 04-01-2010 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:17, 09-01-2010 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 474
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:25, 14-04-2011 | #12 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата BigBoo:
@echo off CALL:INISET 1.ini paste ccc 0 EXIT :INISET %file_path% %section% %parm% %val% ::----------------------------------------- SETLOCAL DisableDelayedExpansion set $sn= & set $vf=0& set "$ft=%TEMP%\%RANDOM%%RANDOM%.tmp" (for /f "tokens=1,2* delims==:" %%a in ('findstr /n "$" "%~1"') do ( set "$b=%%b"& set "$c=%%c" SETLOCAL EnableDelayedExpansion if "!$b:~0,1!"=="[" set "$sn=!$b:~1,-1!" set $lf=_& if /i "!$sn!"=="%~2" if /i "!$b!"=="%~3" set "$lf=" if defined $c set "$c==!$c!" if defined $lf echo/!$b!!$c! if "!$sn!"=="%~2" if "!$vf!"=="0" set $vf=1& echo %~3=%~4 for /f "tokens=1,2 delims=:" %%i in ("!$sn!:!$vf!") do ( ENDLOCAL& set "$sn=%%i"& set "$vf=%%j")))>"%$ft%" copy /y "%$ft%" "%~1">nul&& del "%$ft%" ::---------------- ENDLOCAL& GoTo:EOF |
|
Последний раз редактировалось amel27, 19-04-2011 в 06:21. Причина: ошибка Отправлено: 14:29, 14-04-2011 | #13 |
Старожил Сообщения: 474
|
Профиль | Отправить PM | Цитировать Попробовал Ваш скрипт, что-то не так. Он просто удаляет параметр "ссс" и ничего более не делает.
![]() |
Отправлено: 22:47, 18-04-2011 | #14 |
Ветеран Сообщения: 1759
|
gsar "-s[paste]" "-rbbb" -o 1.txt |
Отправлено: 23:08, 18-04-2011 | #15 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата BigBoo:
|
|
Отправлено: 06:24, 19-04-2011 | #16 |
Старожил Сообщения: 474
|
Профиль | Отправить PM | Цитировать amel27, всё работает, но в моём случае значение параметра содержит символы, в результате скрипт не срабатывает, то есть к примеру так:
Убираю внутренние кавычки - работает, но хотелось, чтоб они обрабатывались, а также возможна ли обработка символа | ?
|
Отправлено: 19:01, 19-04-2011 | #17 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата BigBoo:
@echo off set "$val="a 1","b 2"|"c 3"" CALL:INISET 1.ini paste ccc $val EXIT :INISET file_path section parm ByRef val ::--------------------------------------- SETLOCAL DisableDelayedExpansion set $sn= & set $vf=0& set "$ft=%TEMP%\%RANDOM%%RANDOM%.tmp" (for /f "tokens=1,2* delims==:" %%a in ('findstr /n "$" "%~1"') do ( set "$b=%%b"& set "$c=%%c" SETLOCAL EnableDelayedExpansion if "!$b:~0,1!"=="[" set "$sn=!$b:~1,-1!" set $lf=_& if /i "!$sn!"=="%~2" if /i "!$b!"=="%~3" set "$lf=" if defined $c set "$c==!$c!" if defined $lf echo/!$b!!$c! if defined %~4 (set $4=!%~4!) else set "$4=%~4" if "!$sn!"=="%~2" if "!$vf!"=="0" set $vf=1& echo %~3=!$4! for /f "tokens=1,2 delims=:" %%i in ("!$sn!:!$vf!") do ( ENDLOCAL& set "$sn=%%i"& set "$vf=%%j")))>"%$ft%" copy /y "%$ft%" "%~1">nul&& del "%$ft%" ::---------------- ENDLOCAL& GoTo:EOF |
|
Отправлено: 05:16, 20-04-2011 | #18 |
Старожил Сообщения: 474
|
Профиль | Отправить PM | Цитировать |
Отправлено: 12:15, 20-04-2011 | #19 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата BigBoo:
Из этого примера видно, что спецсиволы вне кавычек нужно экранировать символом "^". Если мы теперь возьмём всю команду SET в кавычки, то произойдёт инверсия: всё что было в кавычках окажется за ними и наоборот, это нужно учесть при экранировании спецсимволов: |
|
Отправлено: 12:41, 20-04-2011 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
ALTLinux - Как наложить на JPG текст (дата создания файла) | user51 | Общий по Linux | 6 | 30-06-2008 15:37 | |
[решено] как добавить путь к текущей директории в reg файл из bat файла ? | mitiya | Автоматическая установка приложений | 7 | 27-03-2008 16:12 | |
Как искать в поисковиках, еисли я не помню середину слова | taras.v | Хочу все знать | 5 | 12-03-2008 06:41 | |
Разное - [решено] Как в список "Символы" добавить собственные символы для вставки в текст | T-IIIJ | Microsoft Windows 2000/XP | 4 | 23-02-2008 16:27 | |
Как добавить текст в свое сообщение? | Vadikan | О сайте и форуме | 4 | 17-10-2002 07:55 |
|