2015-08-09 4 views
-2

Я хочу, чтобы скрипт выполнялся через 10 секунд после отправки команды печати из любого приложения.Пакетный сценарий: я хочу запустить пакетный скрипт после команды печати

@echo off 
echo. 
echo Purging the print queue... 
net stop Spooler 
echo Deleting all print jobs... 
ping localhost -n 4 > nul 
del /q %SystemRoot%\system32\spool\printers\*.* 
net start Spooler 
echo Done! 
ping localhost -n 4 > nul 
+1

Показать, что вы искали. Здесь нет бесплатного написания кода. – CrakC

+0

У меня есть сценарий, который очищает очередь печати, с которой я хочу запустить через 10 секунд после команды печати '@echo off echo. эхо Промывка очереди печати ... чистая остановка шпульницы эхо Удаление всех заданий печати ... пинг локальный -n 4> NUL дель/кв% SystemRoot% \ system32 \ Spool \ принтеры \ *. * чистый старт Spooler echo Done! ping localhost -n 4> nul' –

+0

Это будет очень сложно (возможно, невозможно) запустить это после печати из любого приложения. Можете ли вы рассказать нам, чего вы пытаетесь достичь? Возможно, есть еще один способ добиться этого. – aphoria

ответ

0
Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & _ 
    "." & "\root\cimv2") 


Set colMonitoredEvents = objWMIService.ExecNotificationQuery _ 
    ("Select * From __InstanceCreationEvent Within 5 Where " _ 
    & "Targetinstance Isa 'CIM_DirectoryContainsFile' and " _ 
    & "TargetInstance.GroupComponent= " _ 
    & "'Win32_Directory.Name=""c:\\\\Windows\\\\System32\\\\Spool\\\\Printers""'") 

Do 
    Set objLatestEvent = colMonitoredEvents.NextEvent 
    Wscript.Echo objLatestEvent.TargetInstance.PartComponent 
Loop 

адаптировано из http://www.codeproject.com/Articles/42212/WMI-and-File-System-Monitoring

Кроме того, это запускает службу

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 

Set colItems = objWMIService.ExecQuery("Select * From Win32_Service") 

For Each objItem in colItems 
    If Lcase(objitem.Name) = "spooler" Then 
     msgbox objitem.name & " " & objitem.status & " " & objitem.state 
     objitem.StartService 
    End If 
Next 

И это удаляет файлы в папке принтеров

On error resume next 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set fldr = fso.GetFolder("c:\windows\system32\spool\Printers") 
For each f in fldr.files 
    f.delete 
Next 
+0

Большую часть времени очередь печати не очищается. Это вызывает случайную или перепечатку одних и тех же файлов. Я хочу заверить, что очередь становится понятной после продолжительности времени, чтобы пользователь мог вручную дать следующую печать. Так что законопроект о том, как использовать этот скрипт –

0

Я в vwork и мой компьютер сломался дома. Что-то вроде этого.

Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & _ 
    "." & "\root\cimv2") 


Set colMonitoredEvents = objWMIService.ExecNotificationQuery _ 
    ("Select * From __InstanceCreationEvent Within 5 Where " _ 
    & "Targetinstance Isa 'CIM_DirectoryContainsFile' and " _ 
    & "TargetInstance.GroupComponent= " _ 
    & "'Win32_Directory.Name=""c:\\\\Windows\\\\System32\\\\Spool\\\\Printers""'") 

Do 
    wscript.scleep 1000 
    On error resume next 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set fldr = fso.GetFolder("c:\windows\system32\spool\Printers") 
    For each f in fldr.files 
     f.delete 
    Next 
Loop