1

谁能解释这里发生了什么?

如果这是在我们域中的机器上运行而没有将其提升为管理员,它会删除所有桌面图标。我不知道如何或为什么?

@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

任何建议将不胜感激,因为它在今天早上引起了一个轻微的问题,我需要一个解释。

4

1 回答 1

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
于 2013-03-15T14:09:03.397 回答