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 に答える