CMD/BAT - Надо сделать вывод пути в файл

Аватара пользователя
volk1234

CMD/BAT - Надо сделать вывод пути в файл

Сообщение volk1234 »

Привет гуру скриптонаписательства!



Вопрос из раздела - сделайте за меня, но честно - ввод вывод в файлы - не освоил.



Есть скрипт допустим для копрования настроек DRWU - с указанием сервера обновлений drweb.

Также в папке лежит файл drwu.ini следующего содержания:



Код:

Код: Выделить всё

[DrWU]
Language=Russian
Boot=1
......................................
Source=\\Wall\$DWUPd\
.....................
Destination=C:\Documents and Settings\All Users\Application Data\Doctor Web\Bases\
...........

Желание какое - сделать универсальный скрипт для разных организаций -

Допустим буду выбирать 1- организация А \\server1\dw\

2- организация А \\dom1\serv\drw\bases



Хотелось бы не меняя структуры файла drwu.ini в зависимости от выбранной организации подставлять соответствующий путь.

то есть надо, чтобы параметр Source= в файле drwu.ini менялся из скрипта/
Аватара пользователя
NiOl

Re: CMD/BAT - Надо сделать вывод пути в файл

Сообщение NiOl »

Если я правильно понял задачу - перемещение со своим буком по объектам?





Код:

Код: Выделить всё

@Echo off
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion
del /f %0_tmp
rem Список сетевых ресурсов. При добавлении переменная должна называться PthN, где N - номер из меню ниже
set INI=drwu.ini
set Pth1=\\server1\dw\
set Pth2=\\datacenter\db\anti\drweb\update\
set Pth3=\\dom1\serv\drw\bases\
set Pth4=\\Vasya\D$\DrWebBases\
rem Выбрать место можно через параметр
set N=%1
if not "%N%"=="" Goto Check
:Menu
Echo  Мы сейчас находимся в:
Echo ========================
Echo.
Echo 1) ООО "Дудка"
Echo 2) ЗАО "Навоз"
Echo 3) Дома
Echo 4) В гостях у Васи Пупкина
Echo.
Echo.
set /P N="Укажите номер и [Enter] ^>"
:Check
Set Pth=!Pth%N%!
if "%Pth%"=="" (cls
Echo Нет такого пункта меню "%N%"
Echo.
Goto Menu
)
for /f "tokens=1 delims=:" %%N in ('findstr /n /i "source" %INI%') do set N=%%N
for /f "tokens=1* delims=" %%L in (%INI%) do (
set L=%%L
set /a N-=1
if !N!==0 set L=Source=%Pth%
echo !L!>>%0_tmp
)
del /f %INI%
copy /y %0_tmp %INI%
del /f %0_tmp
Аватара пользователя
volk1234

Re: CMD/BAT - Надо сделать вывод пути в файл

Сообщение volk1234 »

Прикольно,




Цитата NiOl:



for /f "tokens=1 delims=:" %%N in ('findstr /n /i "source" %INI%') do set N=%%N

for /f "tokens=1* delims=" %%L in (%INI%) do (

set L=%%L

set /a N-=1

if !N!==0 set L=Source=%Pth%

echo !L!>>%0_tmp
CMD/BAT - Надо сделать вывод пути в файл




а можно поподробнее - что делают эти параметры.

Первый цикл ищет строку с source=

А вторая и др ?...
Аватара пользователя
NiOl

Re: CMD/BAT - Надо сделать вывод пути в файл

Сообщение NiOl »

1. Действительно ищет "source", не просто, а с игнорированием регистра, и выдает номер строки в текстовом файле в %N%

2,3. Цикл выбирает из текстовика все строки

4. Обратный отсчет строк

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

6. Вывод строки во временный файл
Аватара пользователя
amel27

Re: CMD/BAT - Надо сделать вывод пути в файл

Сообщение amel27 »

если есть возможность в исходном файле переместить строку с переменным параметром в конец файла, то для формирования нужного INI достаточно будет что-нить типа "Echo Source=\\Wall\$DWUPd\ >>drwu.ini"
Аватара пользователя
volk1234

Re: CMD/BAT - Надо сделать вывод пути в файл

Сообщение volk1234 »

В том то и дело - что нехотелось бы менять порядок параметров в ini файле;

Можно былобы вообще сделать несколько файлов с нужными настройками и в зависимости от выбора копировать нужный -

но это же неэстэтично Изображение



Я думал что есть какая нибудь команда работы с ini файлами как в inf-файлах вроде

"Echo \\Wall\$DWUPd\ >>drwu.ini>>Source="
Аватара пользователя
amel27

Re: CMD/BAT - Надо сделать вывод пути в файл

Сообщение amel27 »

Цитата volk1234:



нехотелось бы менять порядок параметров в ini файле
CMD/BAT - Надо сделать вывод пути в файл




обычно от перерестановки секций в пределах INI-файла и/или параметров в пределах секции смысл INI-файла не меняется... разве только его использует какая-то совсем неправильная программа




Цитата volk1234:



Я думал что есть какая нибудь команда работы с ini файлами как в inf-файлах
CMD/BAT - Надо сделать вывод пути в файл




а что, есть такая команда для INF-файлов?
Аватара пользователя
volk1234

Re: CMD/BAT - Надо сделать вывод пути в файл

Сообщение volk1234 »

Цитата amel27:



а что, есть такая команда для INF-файлов?
CMD/BAT - Надо сделать вывод пути в файл




http://www.oszone.net/3827#ini




Ок. Попробую. Способ с выводом через >> действительно проще и главное я им пользовался, просто хотелось не менять структуру файла.

Но и NiOl спасибо.
Аватара пользователя
volk1234

Re: CMD/BAT - Надо сделать вывод пути в файл

Сообщение volk1234 »

Только единственный момент таким способом не изменишь существующий INI файл - ведь там уже есть одна запись

Source=

получится конфликт путей.
Аватара пользователя
gora

Re: CMD/BAT - Надо сделать вывод пути в файл

Сообщение gora »

Разделите файл drwu.ini на две части:



- drwu1.ini
Цитата volk1234:



[DrWU]

Language=Russian

Boot=1

......................................

CMD/BAT - Надо сделать вывод пути в файл




- drwu2.ini
Цитата volk1234:



.....................

Destination=C:\Documents and Settings\All Users\Application Data\Doctor Web\Bases\

...........

CMD/BAT - Надо сделать вывод пути в файл




В скрипт, после выбора варианта, добавьте:

Код:

Код: Выделить всё

Copy /Y drwu1.ini drwu.ini
Echo Source=\\Wall\$DWUPd\>>drwu.ini
Copy /A drwu.ini + drwu2.ini drwu.ini
Ответить

Вернуться в «Скриптовые языки администрирования Windows»