2012-04-05 6 views
1

Ich habe 6 Netzwerkdrucker auf einem Server und muss sie auf einen anderen Server verschieben. Ich habe 95 Clients, die sie verwenden, aber einige haben nur bestimmte Drucker installiert. Ich brauche eine Batch-Datei-Abfrage für einen Drucker, wenn es vorhanden ist, dann entfernen Sie es und fügen Sie es erneut dem neuen Server hinzu. Hier ist das Skript so weit. Ich kann die Abfrageanweisung nicht herausfinden.Batch Script zum Abfragen des Netzwerknamens des Druckers und zum Wechseln zu einem anderen Server

@ 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 

Antwort

1

Hier ist etwas, das die von Ihnen benötigte Ausgabe erzeugen sollte. Das ist der Speicherort der prrnmngr.vbs in Windows 7, ich denke, es ist in der Wurzel von System32 in XP. so oder so, es sollte das alte entfernen und das neue jetzt hinzufügen.

@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 

bearbeitet Ihre entfernen schließen/hinzufügen auf Druckernamen Spiel basierte Funktionen.

+0

Ich habe es getestet und es erstellt die Textdatei mit Druckernamen. Wie lese ich das Skript durch, wenn also \\ server6 \ printer1 existiert, dann entferne und füge wieder hinzu \\ server11 \ printer1 – user1011061

+0

Ich habe das obige Skript bearbeitet. Es generiert keine Textdatei mehr, sondern speichert den Druckernamen als Variable und testet diese Variable anhand Ihres bekannten Druckernamens. Wenn ein bekannter Drucker gefunden wird, wird er entfernt und der neue hinzugefügt. Auch ... wenn das für Sie funktioniert, wenn Sie den Scheck neben der Antwort aufheben und anklicken könnten, würde ich mich freuen. – iesou

+0

Vielen Dank für die Hilfe. Es gibt immer noch ein Problem. Jetzt wird es den alten Drucker entfernen und den neuen Drucker hinzufügen, aber wenn der alte Drucker 2 nicht auf einem Computer existiert, fügt er immer noch den neuen Drucker 2 zum System hinzu. – user1011061

Verwandte Themen