2013-03-15 26 views
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

問題是您的命令沒有按照您的意圖進行組合。 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 
+0

哦,很好,先生! – Magoo 2013-03-15 15:43:19

+0

@rojo謝謝你,我會通過這個! – 2013-03-15 16:27:31

+0

所以基本上把它當作一個完全成長的程序和結構:) – 2013-03-15 16:30:29

相關問題