Пакетный файл для проверки содержимого папки и перезапуска диспетчера очереди печати не работает - PullRequest
0 голосов
/ 02 апреля 2020

У нас есть проблема, когда 24-дюймовый плоттер продолжает зависать, и единственный способ исправить это - остановить спулер печати, удалить содержимое принтера, а затем перезапустить спулер. Для нетехнических людей это довольно сложно, поэтому я подумал, что напишу простой пакетный файл (ниже), чтобы помочь ...

@echo off
echo Press any key to fix Plotter frozen print queue.
pause
sc stop Spooler
echo Spooler service stopped, please wait.
timeout 5
if exist "C:\Windows\System32\spool\PRINTERS\*.*" (
echo Files are in the print queue
echo **check no other printer is being used before continuing**
pause
del "C:\Windows\System32\spool\PRINTERS\*.*"
) else (
echo There are no files in any print queues
)
sc start Spooler
echo Spooler service restarting, please wait.
timeout 5
pause

Теперь это работает все, кроме обратной связи с папкой .. ... если папка пуста, она по-прежнему говорит, что там что-то есть? поэтому я использовал тайм-аут для задержки вещей

У службы есть состояния, но я не знаю, как проверить их в командном файле, я также не знаю состояний запуска и остановки: /

STATE              : 2  START_PENDING
STATE              : 3  STOP_PENDING

Заранее спасибо

1 Ответ

0 голосов
/ 02 апреля 2020

Чтобы узнать, есть ли в папке файлы:

dir /b "C:\Windows\System32\spool\PRINTERS\*" | findstr "^" 2>nul && (
  echo files found 
) || (
  echo no files found
)

Чтобы получить состояние диспетчера очереди:

for /f "tokens=3,4" %%a in ('sc query spooler ^|find "STATE"') do set "state=%%a %%b"
echo Spooler state: %state%

(вероятно, вам нужно %%a только для числового сравнения или %%b только для сравнения строк)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...