![]() |
автоматическое обновление справочников Биков ПО 01RKC#.exe
Вложений: 1
добрый день!
необходимо создать батник, который делает такое 1. по пути "C:\INFO\" имеется файл вида "readDDMM.001" (пример файла во вложении, кодировка DOS) где DD и MM день и месяц соответственно, в нем необходимо найти текст (имя файла) "*.arj" (* - постоянно меняется) 2. создать текстовый файл "get.txt" по пути "C:\БИКИ\get\" стекстом "get mfo *.arj" 3. из "C:\INFO\" файл "readDDMM.001" переместить в папку "C:\INFO\сегодняшняя дата в формате «год.месяц.число» (пример 2012.05.21)" (для того что бы повторно не прочитался файл) 4. сканировать папку "C:\BNK\IZM\" на появление архива "*.arj", его необходимо распаковать в туже папку 5. необходимо запустить досовское ПО по пути "C:\BNK\01RKC#.exe" 6.появится ошибка, необходимо кликнуть как то на «ignore» 7. закрыть ПО двойным нажатием "ESC" 8. на сетевом диске "Z:\" изменить имя папки "DAT" на нынешнюю дату в формате год.месяц.число (пример 2012.04.18) 9. скопировать папку "DAT" из "C:\BNK\" на сетевой диск "Z:\" 10. P.s. было бы не плохо сделать что бы он постоянно сканировал папку "C:\INFO\" на появление файла "readDDMM.001" и только когда появился файлик он начал те действия что описаны выше 11. отправить сообщение о завершении обновлений получился очень хороший батник: Код:
@Echo Off Цитата:
|
Цитата:
|
в таком случае я был бы очень благодарен, если бы мне помогли в написании этого скрипта
|
Anufriev, установите приемлемый для вас таймаут сканирования, я по умолчанию 10 секунд поставил. Чтобы окошками черными прыгающими бухгалтеров не стращать, запускайте этот батник свернутым или вообще без видимого окна (поищите, есть утилиты для этого).
Команды распаковки arj-архива вставлять не стал, сами вставите, т.к. я не знаю, какой у вас архиватор там для этих целей. Батник будет висеть и раз в %Timeout% секунд проверять наличие файлов\обрабатывать их. Код:
@Echo Off |
огромное спасибо, все работает как швейцарские часики
p.s. сделал только пару изменений, ну и дописал команду распаковки архива 1. подготовка структуры директорий, не знаю грамотно я это или безграмотно сделал, слизал с кода ниже, главное работает большего и не надо:) Код:
rem Подготавливаем структуру директорий Код:
rem Переименовываем обработанный файл, чтобы исключить повторное прочтение Код:
c:\arj\ARJ32.EXE e C:\BNK\IZM\*.arj C:\BNK\IZM\ |
появилась проблемка, после вашего ответа в другой теме
в каком месте и что дописать в данном батнике, что бы запустить программу 01RKC#.exe после распаковки архива, если верить логике то перед частью которую я указал ниже, но возникает проблема, ПО не обращает внимание на весь остальной код, она в наглую берет и запускается даже если все остальное еще не выполнилось Код:
rem Уход на новую итерацию после таймаута |
Поспешил с вопросом, сам разобрался:), еще раз спасибо огромное
|
замечен небольшой глюк:
запускаю батник, находит файл, создает папку здесь C:\INFO все хорошо, оставил его работать, прихожу сегодня с утра, файл он нашел, но вод папку 2012.05.23 он сегодня не создал и соответственно файл "readDDMM.001" туда не переместил, и начал по кругу создавать файл get.txt. батник у меня вод такой получился Код:
@Echo Off |
Anufriev, директория с датой в этом батнике создается один раз, при запуске. А вы же его вчера запускали, верно? Дата сменилась, а директории нету, следовательно нужно проверять её наличие, и при необходимости создавать каждый раз, когда она будет востребована. Например, переносом проверки\создания в тот же цикл, который разбирает дату на составляющие и перемещает обработанный файл:
Код:
@Echo Off |
спасибо, проверил методом изменения дат во время работы батника, теперь работает прекрасно!
эх... простите, за глупый вопрос, я понимаю что в другой теме вы ответили, что команда, при использовании nircmd, простая для передачи нажатия клавиш в окно, но у меня не получается это сделать, помогите, пожалуйста:( мне необходимо после запуска C:\BNK\01RKC#.EXE через 2 секунды нажать на клавишу I и еще через 2 секунды необходимо нажать два раза "Esc" |
"Справочник БИК" у меня не установлен, поэтому проверить код не на чем, так что попробуйте у себя вот это:
Код:
@Echo Off |
Anonymоus, а почему не ждёте самим NirCmd? Там аж целых две возможности, как «wait», так и более удобная в нашем случае «cmdwait».
|
Вложений: 1
судя по всему, должно с вот этим заголовком "ntvdm*" все работать, сейчас на скриншоте заголовок "ntvdm-ed8.444.35c" где ntvdm - постоянная, -ed8.444.35c - постоянно меняется, но почему то не работает:(
|
Iska, как-то из головы вылетела такая возможность. Вы правы, раз уж nircmd используется, глупо не сделать паузу через него.
Anufriev, немного поправил, проверьте вот этот скрипт Код:
@Echo Off |
так, активным окно делается, а вот нажатие клавиш не передается
|
«Too many fies open» — не проще ли настроить количество доступных для подсистемы файлов? Anufriev, дайте прямую ссылку на «01RKC#.EXE», откуда его можно загрузить.
|
|
Anufriev, сделайте копии файла «config.nt», расположенного в папке «system32» Вашей папки «Windows», и файла «config.fp», расположенного в папке с приложением.
Затем поменяйте в обоих вышеупомянутых файлах строку: Код:
FILES=40 Код:
FILES=200 |
прекрасно, ошибка больше не выскакивает
осталась теперь последняя проблемка, это необходимость закрыть программу, а для этого необходимо двойное нажатие "esc" p.s. перезагрузка не потребовалась! можно сделать вод так Код:
taskkill /IM ntvdm.exe |
Цитата:
|
Всем кто помогал, большое спасибо, задача выполнена, я ликую:)
|
Цитата:
|
я думаю что необходимо сделать ожидание побольше, корректировки там не большие проходят, так что надеюсь будет успевать все корректироваться до того как завершится процесс
конечно можно поискать вариант с более щедящим завершением работ ПО и не понадобилось стороннее ПО, что очень радует. Получился вод такой код Код:
@Echo Off Код:
Option Explicit |
Переделал.
Код:
For /F "tokens=1,2,3 delims=." %%A In ("%Date%") Do ( |
этот бекап баз делается после обновления тоеть в конце всего процесса
возможно ли по завершению батника отправить сообщение не определенный ПК? |
Anufriev, попробуйте net send (net send /? для синтаксиса) или заменитель.
Код:
@Echo Off |
Цитата:
Код:
msg.exe /server:… |
net send в win7 не имеется, стороннее ПО ставить не хочется
вопрос а как работает msg, сам себе получается отправить на другой ПК не удается "Ошибка 1722 при получении имен сеанса" необходимо в реестре изменить HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\AllowRemoteRPC=1 |
оффтоп
|
консоль приходится запускать от имени доменного админа с ПК на ПК которые в домене отправляется
а как тогда отправить с ПК который не в домене, на ПК который в домене:( (создается впечатление, что ему не хватает прав для отправки сообщения) p.s. russur, ты какой то странный;) |
есть вариант конечно отправлять файлик на шару и на ПК сканировать эту шару, при появлении файла выдавать сообщение о том что обновление выполнено
|
Или, если у вас в организации разрешено использование jabber'а - можно вот этим ruby-скриптом отсылать уведомления.
UPD: А ссылка-то и не работает. Залил сохранившийся у меня инсталлер на обменник: http://rghost.ru/38254678 |
проблемка:(
Доступ к публикации закрыт Вы пытаетесь открыть публикацию, написанную пользователем Zloy1. Автор переместил топик в черновики. |
а не расскажете как им пользоваться?:(
|
Расскажу. Там есть файл xmpp_sender.yml, это профиль из которого берутся настройки по умолчанию (любую из них можно позже поменять при вызове из батника), там обычно хранится пароль и прочее. Он имеет вот такой вид:
Код:
# Be patient - don't use <Tab> for indentation, it's not permited in YAML Сама отправка сообщения вызывается вот так: Код:
xmpp_sender -b "Update succesfuly installed at %Date% %Time:~-0,8%">nul Использовать кириллицу в теле сообщения можно только при условии, что батник сохранён в UTF-8 без BOM. В случае использования другой кодировки, сообщение придет в битой кодировке. |
что то не удается мне отправить:(, сообщение не доходит, пользуюсь корпоративным сервером
ввожу команду: C:\Windows\system32>"C:\Program Files (x86)\Xmpp Sender\xmpp_sender.exe" -b "Update succesfuly installed at %Date% %Time:~-0,8%" выдает вот это: working directory: C:/Program Files (x86)/Xmpp Sender/ @server: jabber.abp.local @login: anufriev_a@jabber.abp.local @password: ***** @to: tarabaev_d@jabber.abp.local @subject: test @body: Update succesfuly installed at 25.05.2012 9:26:58 C:/Program Files (x86)/Xmpp Sender/lib/ruby/gems/1.8/gems/xmpp4r-0.5/lib/xmpp4r/jid.rb:126:in `domain': undefined method `empty?' for nil:NilClass (NoMethodError) from C:/Program Files (x86)/Xmpp Sender/lib/ruby/gems/1.8/gems/xmpp4r-0.5/lib/xmpp4r/client.rb:70:in `connect' from C:/Program Files (x86)/Xmpp Sender/src/xmpp_sender.rb:38:in `send' from C:/Program Files (x86)/Xmpp Sender/src/xmpp_sender.rb:162 |
Я же вам пример файла настроек привел. Сервер указывается один раз, в server:, поэтому указание полного JID'а абсолютно не требуется, и более того, приводит к ошибкам. В вашем случае содержимое файла настроек xmpp_sender.yml должно выглядеть как-то так:
Код:
xmpp_sender: |
ошибок не выдает, но сообщения не доходят:( странно как то
p.s. первый раз я слал именно с такими настройками, тоже не шло, потом решил попробовать указать полный JID |
Хм, тогда не подскажу в чем может быть проблема, у меня с приведенными настройками работает с серверами neko.im, 2ch.so, jabber.ru и qip.ru. В то же самое время, на jabber.jp не отправляет. Предположу, что проблема может быть в программном обеспечении, используемом самим сервером.
Как вариант, посылать уведомления предложенным вами способом, через шару во внутренней сети, ну или отправлять уведомления на почту, через BLAT или аналоги. |
думаю пойду другим путём, загоню тот ПК в домен, и буду полноценно пользоваться командой msg
|
c:\Program Files (x86)\Xmpp Sender>xmpp_sender.exe
working directory: c:/Program Files (x86)/Xmpp Sender/ @server: domain-xmpp.ya.ru @login: term@cmy.ru @password: DUB @to: term@cmy.ru @subject: Test message prtg @body: Hey Zloy, I tried xmpp sender too. Best wishes! c:/Program Files (x86)/Xmpp Sender/lib/ruby/gems/1.8/gems/xmpp4r-0.5/lib/xmpp4r/jid.rb:126:in `domain': undefined method `empty?' for nil:NilClass (NoMethodError) from c:/Program Files (x86)/Xmpp Sender/lib/ruby/gems/1.8/gems/xmpp4r-0.5/lib/xmpp4r/client.rb:70:in `connect' from c:/Program Files (x86)/Xmpp Sender/src/xmpp_sender.rb:38:in `send' from c:/Program Files (x86)/Xmpp Sender/src/xmpp_sender.rb:162 Вот на том и паримся. Прошу обратить внимание! Мне надо именно в логине указывать домен, потому что на сервере их тысячи, если не больше. Будьте добры, помогите разобраться в этом глюке. Бесценно будет для людей эта утилита. OS: win 2008r2 x64 |
Протестировал даже без полного логина с доменом, на jabber.ru - сообщения не доходят....
Помогите кто ни будь, сделать эту утилиту, пожалуйста. |
так, трабл почему не доходили сообщения нашёлся - надо оказывается было предварительно другу другу в контакт лист добавится.... Но, трабл с логин@домен - не решён.. тут нужно человека понимающего руби...
|
Время: 12:01. |
Время: 12:01.
© OSzone.net 2001-