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

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

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

Аватара для volk1234

Старовер


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


Конфигурация

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


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

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

Есть скрипт допустим для копрования настроек 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 менялся из скрипта/

-------

Ю-ху!


Отправлено: 23:22, 01-12-2009

 

Старожил


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

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


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

Код: Выделить весь код
@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

-------
Как сказало Дерево Дровосеку: "я - пень".

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

Отправлено: 14:26, 02-12-2009 | #2



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

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


Аватара для volk1234

Старовер


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

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


Прикольно,

Цитата 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 »
а можно поподробнее - что делают эти параметры.
Первый цикл ищет строку с source=
А вторая и др ?...

-------

Ю-ху!


Отправлено: 16:34, 02-12-2009 | #3


Старожил


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

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


1. Действительно ищет "source", не просто, а с игнорированием регистра, и выдает номер строки в текстовом файле в %N%
2,3. Цикл выбирает из текстовика все строки
4. Обратный отсчет строк
5. Если это нужная строка, то в ней будет лежать нужный путь
6. Вывод строки во временный файл

-------
Как сказало Дерево Дровосеку: "я - пень".

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

Отправлено: 18:40, 02-12-2009 | #4


Googler


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

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


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

Отправлено: 11:25, 03-12-2009 | #5


Аватара для volk1234

Старовер


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

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


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

Я думал что есть какая нибудь команда работы с ini файлами как в inf-файлах вроде
"Echo \\Wall\$DWUPd\ >>drwu.ini>>Source="

-------

Ю-ху!


Отправлено: 15:40, 03-12-2009 | #6


Googler


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

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


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

Цитата volk1234:
Я думал что есть какая нибудь команда работы с ini файлами как в inf-файлах »
а что, есть такая команда для INF-файлов?

Отправлено: 11:00, 04-12-2009 | #7


Аватара для volk1234

Старовер


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

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


Цитата amel27:
а что, есть такая команда для INF-файлов? »
http://www.oszone.net/3827#ini

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

-------

Ю-ху!


Отправлено: 12:09, 04-12-2009 | #8


Аватара для volk1234

Старовер


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

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


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

-------

Ю-ху!


Отправлено: 15:40, 04-12-2009 | #9


Аватара для gora

Ушёл из жизни


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

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


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

- drwu1.ini
Цитата volk1234:
[DrWU]
Language=Russian
Boot=1
......................................
»
- drwu2.ini
Цитата volk1234:
.....................
Destination=C:\Documents and Settings\All Users\Application Data\Doctor Web\Bases\
...........
»
В скрипт, после выбора варианта, добавьте:
Код: Выделить весь код
Copy /Y drwu1.ini drwu.ini
Echo Source=\\Wall\$DWUPd\>>drwu.ini
Copy /A drwu.ini + drwu2.ini drwu.ini

Отправлено: 16:17, 04-12-2009 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - удалить файл при длинном пути. Friend Microsoft Windows 2000/XP 19 17-12-2009 01:22
Прочее - Помогите сделать скрипт <из контейнера AD добавить файл *.dll по определенному пути> chernikov72 Программирование и базы данных 3 07-04-2009 20:20
[решено] PHP | Вывод массива в файл Coutty Вебмастеру 2 29-10-2008 08:48
Вывод размера папки в отдельный файл скриптом Whiteee Microsoft Windows NT/2000/2003 1 16-07-2008 14:06
Как сделать постраничный вывод? FADE Вебмастеру 7 20-07-2004 18:37




 
Переход