Тогда держите готовый скрипт. Файла естественно не было, я имитировал его наличие. Сообщения в джаббер отправляются с помощью вот этого
ruby-скрипта, спасибо его автору.
Скачать уже скомпилированный скрипт вместе с интерпретатором ruby можно отсюда
http://rghost.ru/36655943
Когда я тестировал отправку, иногда бывало, зависало секунд на 30. С нормальными серверами, не qip.ru обычно такого не происходит.
Вот скрипт, если захотите сами скомилировать:
Скрипт
@Echo Off
SetLocal EnableDelayedExpansion
:: Прописываемся в path до конца сессии
Echo %Path%|Find "%CD%\xmpp">nul||Set Path=%Path%;%CD%\xmpp
:: Читаем настройки из файла
Set CfgFile=settings.cfg
Call :ReadKeyValue
:: Создаем профиль со значениями по умолчанию для бота
Call :WriteAccountData
For /F "delims=" %%F In ('Dir "%Dropbox.Path%\Capture*.jpeg" /A:-D /B /O:-D') Do (
Echo Sending message...
xmpp_sender -b "http://dl.dropbox.com/u/%Dropbox.ID%/img/%%F">nul
Exit
)
pause
rem Запись данных в профиль бота
:WriteAccountData
>"%Jabber.Config%" (
Echo xmpp_sender:
Echo server: %Jabber.Server%
Echo login: %Jabber.SenderLogin%
Echo password: %Jabber.SenderPswd%
Echo to: %Jabber.Receiver%
Echo subject: %Jabber.MessageSubj%
Echo body: %Jabber.MessageBody%
)
Exit /B
rem ====== Функции для работы с файлами формата key=value
rem Inquisitor, 2011
:ReadKeyValue
:: Читает значения из файла, назначает переменные и подготавливает данные для :WriteKeyValue
If Not Exist %CfgFile% (Exit 1)
Set i=0
For /F "usebackq tokens=1,2* delims==" %%A In ("%CfgFile%") Do (
Set /A i+=1
Set %%A=%%B
Set CfgKey!i!=%%A
Set CfgStrings=!i!
)
Exit /B
:WriteKeyValue
:: Записывает данные обратно в файл, соответственно, с внесенными изменениями
If Exist "%CfgFile%" (Del "%CfgFile%")
For /L %%S In (1,1,%CfgStrings%) Do (
Call :SingleLine "!CfgKey%%S!"
)
Exit /B
:SingleLine
If "%~1"=="" Exit /B
If Not "!%~1!"=="" (Echo %~1=!%~1!>>"%CfgFile%") Else (Echo %~1>>"%CfgFile%")
Exit /B
:AddEntry
:: Добавляет значение (пустое), которое позже можно назначить через Set и записать через WriteKeyValue
:: Пример - Call :AddEntry "# тестовый комментарий", Call :AddEntry "Key123",
If Not "%~1"=="" (
Set /A CfgStrings+=1
Set CfgKey!CfgStrings!=%~1
)
Exit /B
:RemoveEntry
:: Удаляет точно или частично совпавшие ключи, регистрозависимо, используется Find
:: Пример - Call :RemoveEntry "TestKey"
If Not "%~1"=="" (
For /L %%L In (1,1,%CfgStrings%) Do (
Echo !CfgKey%%S!|Find "%~1">nul&&Set CfgKey%%L=
)
)
Exit /B
rem ===============================
Файл настроек
[Jabber]
# Сервер. Отправитель и получатель должны находится на том же сервере.
Jabber.Server=qip.ru
# Логин бота
Jabber.SenderLogin=jabber.bot
# Пароль бота
Jabber.SenderPswd=qwerty123
# Получатель
Jabber.Receiver=avenger-inkognito
# Тема по умолчанию - используется, если не задано
Jabber.MessageSubj=Уведомление
# Текст по умолчанию - используется, если не задано
Jabber.MessageBody=test
# Файл, из которого бот читает значения по умолчанию
Jabber.Config=xmpp\xmpp_sender.yml
[Dropbox]
# Путь к директории со скриншотами
Dropbox.Path=C:\Dropbox\Public\img
# ID пользователя
Dropbox.ID=1011483
Оба в кодировке UTF-8, для поддержки кириллицы в джаббере.