Модераторы: bartram, Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция логирования для bat-файла, как правильно написать функцию 
:(
    Опции темы
TP@MB@Y
Дата 18.3.2010, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 18.12.2004
Где: Москва

Репутация: нет
Всего: 4



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

запись в лог представляет из себя что-то типа:
Код

echo "[%DATE% %TIME%] Some string" >> %LOG%


Хотелось бы это оформить в виде функции, чтобы просто написать, например:
Код

call :logit "Some string"


Погуглив, я нашел, что это реализуется так:
Код

:logit 
echo "[%DATE% %TIME%] Some string" >> %LOG%
exit \b


но такая реализация выдает ошибку синтаксиса.
Если есть знающие люди - поделитесь как правильно реализовать?


PS 
Это мой первый bat-скрипт, поэтому не ругайте сильно если что smile
PM   Вверх
Akina
Дата 18.3.2010, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 42
Всего: 454



Сделай отдельный батник для вывода в лог, а не процедуру в текущем. И передавай ему строку для вывода в качестве параметра.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
TP@MB@Y
Дата 18.3.2010, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 18.12.2004
Где: Москва

Репутация: нет
Всего: 4



Цитата(Akina @ 18.3.2010,  11:44)
Сделай отдельный батник для вывода в лог, а не процедуру в текущем. И передавай ему строку для вывода в качестве параметра.

как вариант.

а более изящно никак? smile
PM   Вверх
Akina
Дата 18.3.2010, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 42
Всего: 454



Более изящно - отказаться от древней технологии батников в пользу хотя бы VBS/JS скрипта. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Дрон
Дата 18.3.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 5
Всего: 93



TP@MB@Y, да вроде у тебя всё правильно написано, кроме %LOG%, которая не понятно на что ссылается. Вот на неё и ругается система, а вызов call идёт нормально:

Код
call :logit "Preved, Medved!"

goto :eof

:logit 
echo "[%DATE% %TIME%] %~1" >> log.txt
exit \b



--------------------
Да. Именно так.
PM   Вверх
TP@MB@Y
Дата 18.3.2010, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 18.12.2004
Где: Москва

Репутация: нет
Всего: 4



Цитата(Дрон @ 18.3.2010,  15:10)
TP@MB@Y, да вроде у тебя всё правильно написано, кроме %LOG%, которая не понятно на что ссылается. Вот на неё и ругается система, а вызов call идёт нормально:

Код
call :logit "Preved, Medved!"

goto :eof

:logit 
echo "[%DATE% %TIME%] %~1" >> log.txt
exit \b

ну %LOG% у меня обозначена, просто я не стал ее определение писать в код.

а вот "goto :eof" у меня нет, может поэтому ругается, когда исполнение скрипта находит на определение функции?
PM   Вверх
Дрон
Дата 18.3.2010, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 5
Всего: 93



Цитата(TP@MB@Y @  18.3.2010,  17:14 Найти цитируемый пост)
может поэтому ругается, когда исполнение скрипта находит на определение функции?

Не знаю  smile 
Понятия "определение функции" для пакетного файла не существует, это ж просто метка. Такая же как для goto. 
А :eof это тоже просто специальная предопределённая метка для выхода.

Вот так у меня работает, может ты LOG неправильно определял? 
Например пробелов между названием переменной, знаком =, и значением быть не должно.
Код
SET LOG=C:\log.txt

call :logit "Preved, Medved!"

goto :eof

:logit 
echo "[%DATE% %TIME%] %~1" >> %LOG%
exit \b




--------------------
Да. Именно так.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Windows"
December
bartram
Akella

Запрещается!

1. Обсуждать взлом и делиться кряками

2. Способствовать созданию и распространению вирусов

  • Для бессмертных бородатых вопросов типа Win vs Nix есть специальный форум Религиозные Войны
  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • ВСЕГДА УКАЗЫВАЙТЕ ВЕРСИЮ ОС

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, December, bartram, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Windows | Следующая тема »


 




[ Время генерации скрипта: 0.0482 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.