2011-12-21 2 views
4

Windowsのバッチファイルを作成していますが、ローカルコンピュータに印刷が存在するかどうかを確認する必要があります。ここで私はプリンタを削除するために使用しているコードです。プリンタがローカルに存在するかどうかを確認するスクリプトで、削除する場合は削除します。

RUNDLL32 printui.dll,PrintUIEntry /n \\server\printerName /dn 

これはうまくいきましたが、これは前もって条件付きのステートメントが必要なので、そのプリンタが最初に存在するかどうかを確認します。その後、その行を実行します。私はこれを書く方法がわかりません。

+0

あなたはそれをとにかく実行することはできませんか?それが存在しなければそれは何もしません、それはそれを削除しますか? –

+0

私はエラーになりますが、次の行に進みます。私はこのスクリプトを起動スクリプトとして実行しているので、エラーがないようにしたいと思います。これは問題でない限り(私はこのタイプのコードではあまり経験がありません) – dremme

+0

あなたはどんなエラーがありますか? –

答えて

2

あなたはこのようなものを試すことができます。見つけたいプリンタで見つける文字列を置き換えてください。

For /F "Tokens=4 delims=\" %%I In ('reg query HKCU\Printers\Connections ^|find /I "560C"') Do If "%%I"==",,ServerName,HP DeskJet 560C" goto :REMOVE 
goto :SKIP 
:REMOVE 
RUNDLL32 printui.dll,PrintUIEntry /n \\server\printerName /dn 
:SKIP 

コマンドを実行するだけで、存在しない場合はエラーになりますが、正常に実行されますか?

希望すると便利です。

+0

素晴らしい作品です!ありがとう! – dremme

+1

あなたの歓迎、私は助けることができてうれしい:) –

+0

最後にもう一度、これを再訪して申し訳ありません。同じスクリプトで同じプリンタを別のプリンタで実行するにはどうすればよいですか?私はスクリプトの下で行を繰り返してみましたが、この方法では動作しませんでした。ありがとう! – dremme

0

チェックをスキップして、削除コマンドを実行することができます。 エラーポップアップを抑制するには、rundll32 printui.dll documentationに指定されているように、/qオプションを追加します。 これは:

RUNDLL32 printui.dll,PrintUIEntry /n \\server\printerName /dn /q 
関連する問題