重启打印后台处理程序的批处理文件删除桌面图标,任何人?

时间:2013-03-15 12:17:06

标签: windows-7 printing batch-file

有谁可以解释这里发生了什么?

如果在我们域上的计算机上运行此操作而不将其升级为管理员,则会删除所有桌面图标。我不知道怎么或为什么?

@echo off
net stop spooler
IF NOT exist C:\Windows\System32\spool\PRINTERS\*.shd echo NO DOCUMENTS IN QUEUE ONCE THE SPOOLER HAS STARTED TRY PRINTING AGAIN
IF NOT exist C:\Windows\System32\spool\PRINTERS\*.shd msg * NO DOCUMENTS IN QUEUE ONCE THE SPOOLER HAS STARTED TRY PRINTING AGAIN
IF exist C:\Windows\System32\spool\PRINTERS\*.shd del C:\Windows\System32\spool\PRINTERS\*.shd
IF exist C:\Windows\System32\spool\PRINTERS\*.spl del C:\Windows\System32\spool\PRINTERS\*.spl echo PRINTER QUE CLEARED PLEASE TRY PRINTING AGAIN msg * PRINTER QUE CLEARED PLEASE TRY PRINTING AGAIN
net start spooler
pause

任何建议都会感激不尽,因为它在今天早上引起了一个小问题,我需要一个解释。

1 个答案:

答案 0 :(得分:4)

问题是您的命令没有按照您的意图进行组合。删除del之后的所有内容 - 最明显的是net start spooler之前包含虚假星号的行。所以基本上你是在调用del *,它会删除当前工作目录中的所有内容(表面上是你的桌面)。

如果您希望在匹配的if条件下发出多个命令,请使用括号和新行。

@echo off
net stop spooler
IF NOT exist C:\Windows\System32\spool\PRINTERS\*.shd (
    echo NO DOCUMENTS IN QUEUE ONCE THE SPOOLER HAS STARTED TRY PRINTING AGAIN
    msg * NO DOCUMENTS IN QUEUE ONCE THE SPOOLER HAS STARTED TRY PRINTING AGAIN
) else (
    del C:\Windows\System32\spool\PRINTERS\*.shd
)
IF exist C:\Windows\System32\spool\PRINTERS\*.spl (
    del C:\Windows\System32\spool\PRINTERS\*.spl
    echo PRINTER QUE CLEARED PLEASE TRY PRINTING AGAIN
    msg * PRINTER QUE CLEARED PLEASE TRY PRINTING AGAIN
)
net start spooler
echo Press any key to exit.
pause>NUL