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

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

Ответить
Настройки темы
CMD/BAT - [решено] Нужно что бы программа в локальной сети запускалась в единственном энкземпляре

Новый участник


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

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


Нужно что бы программа в локальной сети запускалась в единственном энкземпляре.
Нашел способ с помощью утилиты PsList, но несколько дней экспериментов с политиками и правами доступа не дали рензультата, зато есть доступ в общую папку. Из чего родилась идея:
-Батник должен запускать данную программу, при запуске создавая в своей общей папке например 111.txt
-После выхода из программы 111.txt должен удаляться (Не знаю воозможно ли это).
-А перед запуском проверять, нет ли такокого файлика в чужой общей папке по адресу \\User\111.txt Соответственно если файл есть, то программа не должна запускаться.
Буду признателен за помощь. В батниках я чайник...

Отправлено: 19:29, 22-02-2011

 

Старожил


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

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


$Userlist - список пользователей, по 1 на строку. Например, так:
Код: Выделить весь код
\\192.168.1.217
\\MORFEY
\\BIBLIOTEKA
\\MICROSOF-D58208
$Sharename - Название общей шары на всех компах в сети
$LocalShare - Путь к общей шаре на этом компе
$Program - Нужная программа
Если компьютер не в сети, то опрашивать его может до 20 секунд, чтобы не казалось, что скрипт завис, я добавил индикацию текущего адреса

Код: Выделить весь код
@Echo Off
Set $Userlist=userlist.txt
Set $Sharename=Temp
Set $LocalShare=D:\Temp
Set $Program=C:\Windows\notepad.exe

Set /A $isRunning=0
For /F "tokens=*" %%l In (%$Userlist%) Do (
Echo Checking... %%l\%$Sharename%\
If Exist %%l\%$Sharename%\isRunning.flag Set /A $isRunning=$isRunning+1
)
If Not %$isRunning%==0 (Exit) Else (Echo.>"%$LocalShare%\isRunning.flag")
Echo Do not close this window
Call "%$Program%"
Del "%$LocalShare%\isRunning.flag"
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:27, 23-02-2011 | #2



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

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


Ветеран


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

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


Цитата Anonymоus:
Если компьютер не в сети, то опрашивать его может до 20 секунд »
Это что-то новое - if exists вообще не работает с сетевыми путями ;-)

Отправлено: 17:44, 23-02-2011 | #3


Новый участник


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

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


Anonymоus Код работает. Премного благодарен, просто огромное спасибо.
Сначала isRunning.flag не создавался в своей общей папке (нет доступа). Оказалось что надо добавить в разрешения себя (админа !!!).

Отправлено: 19:56, 23-02-2011 | #4


Старожил


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

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


Цитата Busla:
if exists вообще не работает с сетевыми путями »
А вот автор этой статьи даже написал мультиплеер крестики-нолики, именно с использованием файлов-меток и if (not) exist, ну и на закуску - подобие телнета с использованием аналогичных, по вашему утверждению, не работающих команд.

Отправлено: 22:52, 23-02-2011 | #5


Ветеран


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

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


Anonymоus, да, извиняюсь - что-то попутал

Отправлено: 10:08, 24-02-2011 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как узнать запускалась ли программа Ledax Хочу все знать 1 29-12-2010 15:43
Mandriva/Mandrake - Программа мониторинга локальной сети Nerde Общий по Linux 2 06-05-2010 16:53
[решено] Как сделать чтобы запускалась программа на компьютере при подключении флешки t1nkoff Хочу все знать 10 08-06-2009 21:16
Программа для общения по локальной сети kazarkin Сетевые технологии 7 31-01-2006 17:24
Что нужно для АДСЛ-Интернет в локальной сети. Zippy Сетевые технологии 4 28-09-2004 15:44




 
Переход