Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] *.ini

Ответить
Настройки темы
CMD/BAT - [решено] *.ini

Новый участник


Сообщения: 9
Благодарности: 1

Профиль | Отправить PM | Цитировать


помогите не разумному ))

в *.ini есть такая запись

Код: Выделить весь код
[Script]
Enabled=1
[Options]
DBMS=sqlite
после DBMS=sqlite создать либо удалить подобную запись
Код: Выделить весь код
server=F:\work\servise\liteServerSQL\sqlite.db

Отправлено: 08:46, 10-09-2018

 

Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
set "Z=server=F:\work\servise\liteServerSQL\sqlite.db"

:: Добавить строку в конец файла "file.ini"
>>file.ini echo %Z%
:: Удалить указанную строку из файла "file.ini"
<file.ini>$ (for /f "delims=" %%a in ('find /n /v "%Z%"') do @set "s=%%a"& cmd /v/c echo[!s:*]^^=!)& >nul move $ file.ini

pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:57, 10-09-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата VladimirVVP:
после DBMS=sqlite создать либо удалить подобную запись »
если параметр server присутствовать может только непосредственно за DBMS, то:
powershell
Код: Выделить весь код
$file = 'test.ini'
$r = 'server=F:\\work\\servise\\liteServerSQL\\sqlite.db'
$reg1_1 = "(DBMS\s*=\s*sqlite)\s*"+"$r"
$reg1_2 = "(DBMS\s*=\s*sqlite)(\s*)"
$reg2_1 = '$1'
$reg2_2 = '$1$2'+"$($r -replace '\\\\','\')"+'$2'
if (($a = gc $file -raw) -match $reg1_1){$a -replace $reg1_1,$reg2_1|sc $file -non} else {$a -replace $reg1_2,$reg2_2|sc $file -non}
но должно быть однозначное либо присутствие, либо отсутствие параметра server в сочетании с параметром DBMS, причем везде, т.е. если в одном .ini присутствует сразу оба варианта сочетания параметров, то всегда будет срабатывать только на удаление параметра server, добавлять ничего не будет.

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 10-09-2018 в 14:52.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:34, 10-09-2018 | #3


Новый участник


Сообщения: 9
Благодарности: 1

Профиль | Отправить PM | Цитировать


и все таки я рано радовался
не получается...
Цитата alpap:
@echo off
set "Z=server=F:\work\servise\liteServerSQL\sqlite.db"
:: Добавить строку в конец файла "file.ini"
>>file.ini echo %Z%
:: Удалить указанную строку из файла "file.ini"
<file.ini>$ (for /f "delims=" %%a in ('find /n /v "%Z%"') do @set "s=%%a"& cmd /v/c echo[!s:*]^^=!)& >nul move $ file.ini
pause »
к сожалению в конце не нужно...

Цитата YuS_2:
$file = 'test.ini'
$r = 'server=F:\\work\\servise\\liteServerSQL\\sqlite.db'
$reg1_1 = "(DBMS\s*=\s*sqlite)\s*"+"$r"
$reg1_2 = "(DBMS\s*=\s*sqlite)(\s*)"
$reg2_1 = '$1'
$reg2_2 = '$1$2'+"$($r -replace '\\\\','\')"+'$2'
if (($a = gc $file -raw) -match $reg1_1){$a -replace $reg1_1,$reg2_1|sc $file -non} else {$a -replace $reg1_2,$reg2_2|sc $file -non} »
а этот почему-то не срабатывает....


я папробовал такой вариант

Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
Set infile=test.ini
Set find=server
Set replace=server=%~dp0liteServerSQL\sqlite.db
@echo off
setlocal enabledelayedexpansion
set COUNT=0
for /F "tokens=* delims=, eol=#" %%n in (!infile!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
Echo !TMPR!>>TMP.TXT
)
move TMP.TXT %infile%
но он не заменяет а постоянно дабавляет путь к файлу и получается такая ерунда

server=F:\work\servise\liteServerSQL\sqlite.db=F:\work\servise\liteserver=F:\work\servise\liteServer SQL\sqlite.dbSQL\sqlite.db=F:\work\servise\liteserver=F:\work\servise\liteServerSQL\sqlite.db=F:\wor k\servise\liteserver=F:\work\servise\liteServerSQL\sqlite.dbSQL\sqlite.dbSQL\sqlite.db

в общем суть вот в чем...
в программе пользователь сам выбирает в каком каталоге разместить
значение передается в bat и тот должен в указанном каталоге создать папку liteServerSQL и переместить туда sqlite.db
а выбранный путь нужно записать в seting.ini

это можно и в программе сделать, но есть но, папке liteServerSQL нужно открыть общий доступ, чего не возможно сделать из программы по этому я и использую bat и соотвественно хотел передать в него весь этот процес, что бы не занимать прорамму кодом..

но походу это не получится .. потому сделаю так
пользователь в программе выбирает папку для размещения
параметр записывается в setting.ini
после запускаем программно этот самый батник
батник берет значение из setting.ini и проделывает уже известные действия

и опять не понимаю как мне получить это значение
server=F:\work\servise\liteServerSQL\sqlite.db
из ini, просмотрел много вариантов и на этом форуме то же поискал, примеры есть но не могу врубиться как адаптировать под себя

просто я с батниками только-только сталкнулся и много еще не понимаю..

Отправлено: 22:28, 12-09-2018 | #4


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата VladimirVVP:
не получается... »
Цитата VladimirVVP:
к сожалению в конце не нужно... »
что не нужно? А что вообще нужно?
Файл 154128
Файл 154129
Как видно все работает для ваших же выше условий

Потом, воды много льете, а конкретно задачу для bat я увы не понял. Давайте четким машинным языком:
задача1
-Есть файл ini, в нем такое содержание, кодировка файла такая
-Надо в файле сделать что-то чтобы получилось вот это

задача2
-Есть файл ini, в нем теперь такое содержание, кодировка файла такая
-Надо в файле сделать что-то чтобы получилось теперь вот это

Последний раз редактировалось alpap, 12-09-2018 в 22:56.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:43, 12-09-2018 | #5


Новый участник


Сообщения: 9
Благодарности: 1

Профиль | Отправить PM | Цитировать


ок

есть файл setting.ini содержание файла:

[Script]
Enabled=1
[Options]
DBMS=sqlite
server=F:\work\service\
[Grids]
frmServiceCen.tgList.ColCount=5
frmServiceCen.tgList.0=87
frmServiceCen.tgList.1=80
frmServiceCen.tgList.2=84
frmServiceCen.tgList.3=71


Файл в кадировке ANSI
в корневой папке батника находится sqlite.db

нужно получить значение параметра server то есть F:\work\service\
в полученом адресе нужно создать папку liteServerSQL, открыть к этой папке общий доступ и скапировать в нее sqlite.db

Отправлено: 03:08, 13-09-2018 | #6


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


VladimirVVP,
если файлы: setting.ini и sqlite.db в одной директории с bat, то:
Код: Выделить весь код
@echo off
set "fz=setting.ini"
set "z=server"
set "fcp=sqlite.db"
set "dsh=liteServerSQL"

setlocal enabledelayedexpansion
 <"%fz%" (for /f "delims=" %%a in ('find /i "%z%"') do @set "%%a")
 if not exist "!%z%!%dsh%" md "!%z%!%dsh%"
 net share %dsh%="!%z%!%dsh%"
 cmd /c takeown /f "!%z%!%dsh%" /r /d y && icacls "!%z%!%dsh%" /grant Administrators:F /t
 copy "%fcp%" "!%z%!%dsh%"
endlocal

pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:43, 15-09-2018 | #7


Новый участник


Сообщения: 9
Благодарности: 1

Профиль | Отправить PM | Цитировать


Большое Вам спасибо!

Отправлено: 08:13, 15-09-2018 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] *.ini

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - Desktop.ini optimus_747 Microsoft Windows 2000/XP 0 29-01-2008 08:59
Загрузка - Boot.ini C_L_S Microsoft Windows 2000/XP 5 16-09-2007 12:43
WIN.ini Leo85 Microsoft Windows 2000/XP 1 19-10-2006 21:10
setupp.ini Ven Автоматическая установка Windows 2000/XP/2003 1 28-02-2006 17:45
boot.ini veln Автоматическая установка Windows 2000/XP/2003 4 22-02-2005 14:21




 
Переход