Назад | Перейти на главную страницу

Создание сервиса для запуска RoboCopy

Я пытаюсь собрать пакетный файл, который будет настраивать задачу robocopy как службу в ответ на ввод пользователя. Основная идея заключается в том, что пользователь вводит MyRobocopyBatchFile.bat sourceFolder destinationMachine, а затем содержимое папки зеркально отображается с известной папкой на destinationMachine. Служба будет настроена на автоматический запуск, поэтому она будет запускаться при запуске. Для этого я взял очереди из этот вопрос

Целевая среда для этого - WindowsServer 2008 R2

Мое намерение сделать это

set destination=\\%2\RunSheets
set source=%~dp0%1
echo Setting source to %source%
echo Setting destination to %destination%
set serviceName=RunSheetCopy%2

sc create %serviceName% binPath= "c:\Windows\System32\robocopy.exe %source% %destination% /MIR /MON:1 /v /log:C:\Logs\RoboCopy\%serviceName%.log /LEV:1" start= auto DisplayName= %serviceName% 

sc start %serviceName%

с пользовательским вводом что-то вроде:

MyRobocopyBatchFile.bat .\RunSheets 10.20.30.40

Проблема, с которой я столкнулся, заключается в том, что когда пакетный файл запускает службу, он выдает мне сообщение об ошибке. Такое же сообщение об ошибке появляется при запуске с NetStart или через окно служб. Сообщение об ошибке:

 [SC] StartService FAILED 1053:

 The service did not respond to the start or control request in a
 timely fashion.

Несмотря на сообщение об ошибке, robocopy синхронизирует каталоги, но не продолжает работу в режиме мониторинга.

Будем очень признательны за любую помощь в том, как запустить robocopy как услугу.

N.B. Менеджер по продукту очень увлечен идеей услуги.

ОБНОВЛЕНИЕ: поскольку не было способа сделать это в механизме, который бы порадовал PM (SrvAny, быть устаревшим не вариант), я закончил тем, что взломал служебную оболочку для RoboCopy, это не решение, которое я бы понравилось, но он сделает свою работу.

Я смог установить такую ​​штуку несколько лет назад ... но не могу вспомнить, как! Поэтому я снова включил свою старую виртуальную машину, чтобы проверить.

Я использовал srvany.exe утилита, которая поставляется с Комплект ресурсов Windows 2003.

Эта утилита не поддерживается в последней версии Windows, но работает в Windows 2008 R2..

Из предыдущей ссылки обратите внимание на этот важный момент:

Однако учтите, что SC НЕ заменяет SRVANY! SC поможет вам создать / установить службу, но он не позволит вам запускать обычный исполняемый файл, не являющийся службой, в качестве службы Windows, например srvany.exe.

Вот почему вы получаете сообщение об ошибке. В Robocopy Команда выполняется при запуске службы, но затем происходит сбой, поскольку она не предназначена для работы в качестве службы Windows.


  1. Загрузить и установить rktools.exe на ваше рабочая станция, а затем скопируйте только нужный файл srvany.exe где-нибудь на вашем сервере (скажем, c:\Tools).

  2. Затем создайте службу Windows для srvany :

    sc create Robocopy-Service binPath= "C:\Tools\srvany.exe" start= auto
    
  3. Откройте реестр и перейдите по ссылке: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Robocopy-Service

  4. Создайте новый ключ под названием Parameters

  5. Под этим новым ключом создайте 3 новых строковых значения:

    • Каталог приложений: c: \ windows \ system32
    • Приложение: c: \ windows \ system32 \ robocopy.exe
    • Параметры приложения: c: \ source c: \ dest / MIR / MON: 1

Наконец запустите службу с именем Robocopy-Service и все должно работать нормально.

Теперь, отсюда, вы все еще можете автоматизировать что-то в пакетном файле, но вам придется использовать reg.exe (или regedit.exe) для управления настройками реестра.

Я также нашел в своих закладках исходную ссылку, которая мне помогла: https://plus.google.com/112485889729268615636/posts/bH8rSDo5ocC

Старый пост, новые ответы За $ 49,95 это должно сработать. Работаю над бизнесом Onedrive как услуги. http://www.coretechnologies.com/products/AlwaysUp/

Вот еще один кандидат (бесплатный) для самостоятельной работы: http://www.rozanski.org.uk/services

SVC.EXE Сводка. SVC.EXE - это простая программа командной строки Windows NT для управления службами NT. Службы могут быть перечислены, а отдельные службы могут быть отображены, установлены, изменены или удалены. Он включает средства для определения зависимостей служб. Программа запрашивает всю необходимую информацию со стандартного ввода. Для большинства запросов печатать? отобразит справочное сообщение.

ВНИМАНИЕ! ПЕРЕД ЗАПУСКОМ ЭТОЙ ПРОГРАММЫ РЕКОМЕНДУЕТСЯ СОЗДАТЬ РЕЗЕРВНУЮ РЕГИСТРАЦИЮ. (Хотя я никогда не сталкивался с какими-либо проблемами при его использовании.)

Обратите внимание, что SVC.EXE не имеет отношения к одноименной шпионской программе Madfinder. Для получения дополнительной информации нажмите здесь.

SRVSTART.EXE

Синопсис. SRVSTART.EXE - это исполняемый файл Win32 и библиотека DLL, которая позволяет запускать команды, как если бы они были службами Windows NT. Он также имеет некоторые функции, улучшающие выполнение обычных консольных команд (запрос параметров и т. Д.). DLL можно использовать отдельно для создания службы без написания кода управления службами.

SRVSTART.EXE работает в одном из двух режимов.

It can be used to run an ordinary command (executable program batch file). In this command mode, SRVSTART.EXE can prompt the user for the values of command-line parameters such as passwords.
It can be used to run an executable program in the context of a Windows NT service (service mode). SRVSTART.EXE will itself handle all of the interactions with the NT Service Control Manager (SCM). It is not necessary for the program to include any service management code. 

Награды SrvStart

Файл SRVSTART.EXE изначально был удостоен высшей оценки «Выбор редактора с пятью звездами» по версии ZDNet Downloads. К сожалению, поскольку Ziff-Davis решил взимать плату с разработчиков программного обеспечения - даже с разработчиков бесплатного программного обеспечения, таких как я, - мое программное обеспечение больше не размещается на их сайтах.