Windows 7 重新启动后台打印程序的批处理文件删除桌面图标,有人吗?

Windows 7 重新启动后台打印程序的批处理文件删除桌面图标,有人吗?,windows-7,printing,batch-file,Windows 7,Printing,Batch File,谁能解释一下这里发生了什么事 如果这是在我们域的计算机上运行的,而没有将其提升到admin,那么它将删除所有桌面图标。我不知道怎么做或者为什么 @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:\Window

谁能解释一下这里发生了什么事

如果这是在我们域的计算机上运行的,而没有将其提升到admin,那么它将删除所有桌面图标。我不知道怎么做或者为什么

@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

如果您有任何建议,我将不胜感激,因为它今天早上造成了一个稍大的问题,我需要一个解释。

问题是您的命令没有按照您的意愿进行组合。
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

问题在于,您的命令没有按预期进行组合。
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

@谢谢你,我会把这个传给你的!所以,基本上把它当作一个完整的程序来对待,并对它进行结构化:)@rojo谢谢,我将把这个传递给fortwith!因此,基本上将其视为一个完整的程序,并对其进行结构化:)