windows - 批处理文件检查文件夹内容并重新启动打印后台处理程序不起作用
问题描述
我们遇到了一个问题,即 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
提前致谢
解决方案
要知道,如果文件夹中有文件:
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
仅用于字符串比较)
推荐阅读
- port - 无法在谷歌计算引擎中打开端口
- laravel - Laravel - 表单验证仅在某些字段为空时通过
- unity3d - 如何将世界位置转换为 UV 空间?
- css - 第一个元素应占用空闲空间,下一个元素应具有固定大小
- amazon-web-services - 从 AWS lambda 函数读取本地文件
- powershell - Powershell 中的 _Base 属性是什么以及如何使用它们?
- elasticsearch - Digital Ocean 管理的 Kubernetes 卷处于挂起状态
- node.js - res.write 在 res.write 之后调用 res.end() 之前不发送大数据,但不想结束响应,因为它是 SSE 连接
- postgresql - 使用 database.runMigration 生成节点信息文件时出错
- php - 如何选择所有搜索选项以显示在下表中?