1

サーバー上に6台のネットワークプリンターがあり、それらを別のサーバーに移動する必要があります。私はそれらを使用する95のクライアントを持っていますが、いくつかは特定のプリンターしかインストールされていません。プリンターのバッチファイルクエリが必要です。存在する場合は、削除して新しいサーバーに再度追加します。これがこれまでのスクリプトです。クエリステートメントがわかりません。

@ Remove current printer from computer
Rundll32 PrintUI.DLL,PrintUIEntry /dn /q /n \\server6\Printer1

@ Add new Printer to computer
Rundll32 PrintUI.DLL,PrintUIEntry /in /q /n \\server11\Printer1

@ Remove current printer from computer
Rundll32 PrintUI.DLL,PrintUIEntry /dn /q /n \\server6\Printer2

@ Add new Printer to computer
Rundll32 PrintUI.DLL,PrintUIEntry /in /q /n \\server11\Printer2
4

1 に答える 1

1

必要な出力を生成する必要があるものがあります。これは、Windows 7のprnmngr.vbsの場所であり、XPのSystem32のルートにあると思います。いずれにせよ、古いものを削除し、今すぐ新しいものを追加する必要があります。

@echo off
setlocal
cscript %windir%\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs -l > printers.txt
set count=0
FOR /F "tokens=1-3 delims= " %%G IN (printers.txt) DO call :loop %%G %%H %%I
:loop
if "%1"=="" goto :endloop
if "%1"=="Printer" (
    if "%2"=="name" (
            if "%3"=="\\server6\Printer1" (
            echo Printer1
            REM Remove current printer from computer
            Rundll32 PrintUI.DLL,PrintUIEntry /dn /q /n \\server6\Printer1
            REM Add new Printer to computer
            Rundll32 PrintUI.DLL,PrintUIEntry /in /q /n \\server11\Printer1
        )
        if "%3"=="\\server6\Printer2" (
            echo Printer2
            REM Remove current printer from computer
            Rundll32 PrintUI.DLL,PrintUIEntry /dn /q /n \\server6\Printer2
            REM Add new Printer to computer
            Rundll32 PrintUI.DLL,PrintUIEntry /in /q /n \\server11\Printer2
        )
        pause
    )
)
SHIFT
goto :loop
:endloop

プリンタ名の一致に基づいて削除/追加機能を含めるように編集しました。

于 2012-04-06T19:46:48.017 に答える