Morello 724 Опубликовано: 9 декабря, 2015 Ребят кто шарит в скриптах и подобных тонкостях. Комп на винде 8.1. К нему по USB подключен принтер, он расшарен. Соответственно на нем может печатать много кто. Иногда случается так, что во время печати кем-то по сети, пользователь компа забывает об этом и вырубает свой комп и печать встает. Нужно сделать так, чтобы при выключении компа либо выдавалось предупреждение, что выключение компа невозможно, ибо в очереди печати есть задания, либо, чтобы хотя бы просто при каждом выключении было сообщение проверь принтер... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
sunserg 76 Опубликовано: 9 декабря, 2015 Такое есть на серверных OS: выдаётся вопрос о причине перезагрузки... На 8.1 - если только использовать программы оптимизации. Если несколько ПК, то лучше поставить принт-сервер (USB over Ethernet) или подключить через роутер с портом USB. Могу продать такой: TP-Link TL-PS310U. Новый в наличии, в плёнке. http://www.tp-linkru.com/products/details/?model=TL-PS310U#/overview http://www.computermarket.ru/main/catalog/catid/1198573.aspx Если нужен - пишите в ЛС. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
lvlukola 197 Опубликовано: 9 декабря, 2015 Плюсую за принт-сервер. Вот вариант скрипта на vbs. Частично сожрано с интернета (даже почти полностью ) Dim strComputerdim wmiNSdim wmiQuerydim objWMIServicedim colItemsdim objItemDim intTotalJobsDim intTotalPagesDim intMaxPrintJob strComputer = "."wmiNS = "\root\cimv2"wmiQuery = "Select * from win32_PrintJob"Set objWMIService = GetObject("winmgmts:\\" _ & strComputer & wmiNS)Set colItems = objWMIService.ExecQuery(wmiQuery) If colItems.count = 0 Then Set a = CreateObject("WScript.Shell") a.run "shutdown.exe -s -t 60"Else WSCript.Echo "Очередь заданий не пуста"End If Чуть не дописал - выключать комп нужно именно с него. Можно чуть переделать и положить в "Shutdown script" - тогда не важно как выключать. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
lvlukola 197 Опубликовано: 9 декабря, 2015 Тоже, кстати, могу предложить принт сервер. Если интересно - пишите в лс -) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Morello 724 Опубликовано: 9 декабря, 2015 Такое есть на серверных OS: выдаётся вопрос о причине перезагрузки... На 8.1 - если только использовать программы оптимизации. Если несколько ПК, то лучше поставить принт-сервер (USB over Ethernet) или подключить через роутер с портом USB. Могу продать такой: TP-Link TL-PS310U. Новый в наличии, в плёнке. http://www.tp-linkru.com/products/details/?model=TL-PS310U#/overview http://www.computermarket.ru/main/catalog/catid/1198573.aspx Если нужен - пишите в ЛС. Сеть полностью Wi-Fi, поэтому такая штучка не очень подойдет. Так то и роутер есть с USB портом и принт-сервером, но они слабоваты, часто тупит и печатает с задержками, иногда большими, даже текст. А если послать что-то увесистое растровое, то вообще караул. Поэтому было решено повесить принтер на комп, который это все хорошо переваривает. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Morello 724 Опубликовано: 9 декабря, 2015 Dim strComputer dim wmiNS dim wmiQuery dim objWMIService dim colItems dim objItem Dim intTotalJobs Dim intTotalPages Dim intMaxPrintJob strComputer = "." wmiNS = "\root\cimv2" wmiQuery = "Select * from win32_PrintJob" Set objWMIService = GetObject("winmgmts:\\" _ & strComputer & wmiNS) Set colItems = objWMIService.ExecQuery(wmiQuery) If colItems.count = 0 Then Set a = CreateObject("WScript.Shell") a.run "shutdown.exe -s -t 60" Else WSCript.Echo "Очередь заданий не пуста" End If Чуть не дописал - выключать комп нужно именно с него. Можно чуть переделать и положить в "Shutdown script" - тогда не важно как выключать. Т.е. просто в батник засунуть это? И как положить в Shutdown script? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
sunserg 76 Опубликовано: 9 декабря, 2015 Сеть полностью Wi-Fi, поэтому такая штучка не очень подойдет. Так то и роутер есть с USB портом и принт-сервером, но они слабоваты, часто тупит и печатает с задержками, иногда большими, даже текст. А если послать что-то увесистое растровое, то вообще караул. Поэтому было решено повесить принтер на комп, который это все хорошо переваривает. Принт-сервер (USB over Ethernet) решит эту проблему. Просто воткните его в тот роутер, он же с портами RG-45 ? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
lvlukola 197 Опубликовано: 9 декабря, 2015 Т.е. просто в батник засунуть это? И как положить в Shutdown script? Не - не в батник, в файлик с расширением .vbs. При запуске, если задания есть - он покажет сообщение. Если нету - погасит комп (в данном случае через 60 сек.) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Morello 724 Опубликовано: 9 декабря, 2015 Принт-сервер (USB over Ethernet) решит эту проблему. Просто воткните его в тот роутер, он же с портами RG-45 ? Может и решит, но принтер и роутер далеко друг от друга, вместе их поставить не вариант, принтер большой а3. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Morello 724 Опубликовано: 9 декабря, 2015 Не - не в батник, в файлик с расширением .vbs. При запуске, если задания есть - он покажет сообщение. Если нету - погасит комп (в данном случае через 60 сек.) Попробовал, что-то он постоянно пишет очередь задний не пуста, хотя она пуста. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
lvlukola 197 Опубликовано: 9 декабря, 2015 В скрипты на выключения кидать не получается, т.к. выполняются слишком поздно. Только выключать комп под двойному щелчку на этот Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
lvlukola 197 Опубликовано: 9 декабря, 2015 Попробовал, что-то он постоянно пишет очередь задний не пуста, хотя она пуста. Принтер один? может их несколько и висит в очереди что-то? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NeonicK 426 Опубликовано: 9 декабря, 2015 strComputer = "." точку замени на имя компа Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
lvlukola 197 Опубликовано: 9 декабря, 2015 strComputer = "." точку замени на имя компа Не надо 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
lvlukola 197 Опубликовано: 9 декабря, 2015 Так же попробуй запустить от имени администратора. На win 7 работает! Восьмерки под рукой нет Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Morello 724 Опубликовано: 9 декабря, 2015 Принтер один? может их несколько и висит в очереди что-то? Принтера 3, но они все без работы. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
lvlukola 197 Опубликовано: 9 декабря, 2015 Принтера 3, но они все без работы. Тогда не знаю Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NeonicK 426 Опубликовано: 9 декабря, 2015 Не надо точно!) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NeonicK 426 Опубликовано: 9 декабря, 2015 запусти его в макросе(ворд,ексель) в дебаге и посмотри. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
lvlukola 197 Опубликовано: 9 декабря, 2015 А если так, то что пишет? strComputer = "."wmiNS = "\root\cimv2"wmiQuery = "Select * from win32_PrintJob"Set objWMIService = GetObject("winmgmts:\\" _ & strComputer & wmiNS)Set colItems = objWMIService.ExecQuery(wmiQuery) If colItems.count = 0 Then Else for each PrintJob in colItems WScript.Echo PrintJob.Name & vbCr & PrintJob.JobId next WSCript.Echo "Очередь заданий не пуста"End If Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Morello 724 Опубликовано: 9 декабря, 2015 А если так, то что пишет? strComputer = "." wmiNS = "\root\cimv2" wmiQuery = "Select * from win32_PrintJob" Set objWMIService = GetObject("winmgmts:\\" _ & strComputer & wmiNS) Set colItems = objWMIService.ExecQuery(wmiQuery) If colItems.count = 0 Then Else for each PrintJob in colItems WScript.Echo PrintJob.Name & vbCr & PrintJob.JobId next WSCript.Echo "Очередь заданий не пуста" End If Трижды выводит на экран сообщение с названием одного и того же принтера, но под разными драйверами и в конце "очередь заданий не пуста". Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
lvlukola 197 Опубликовано: 9 декабря, 2015 А если зайти в устройства и принтеры, то там в очередях печати пусто? Есть варик подкоючиться по teamviever? Если есть, то в личку координаты киньте. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Morello 724 Опубликовано: 9 декабря, 2015 А если зайти в устройства и принтеры, то там в очередях печати пусто? Есть варик подкоючиться по teamviever? Если есть, то в личку координаты киньте. Очереди печати точно нет. Может можно переписать скрипт, чтобы на конкретном одном принтере проверялось условие? Дело в том, что этот комп также удаленно подключен к другим принтерам на других компах, и если на них кто-то будет печатать, то соответственно это будет отображаться в очереди печати на всех компах в сети у кого есть этот принтер и соотвественно человек просто не сможет вырубить свой комп...) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
drovik 7 378 Опубликовано: 9 декабря, 2015 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Morello 724 Опубликовано: 9 декабря, 2015 А зачем комп вырубать? домой например пойти. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах