Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 07.08.2009 um 17:58:48 Uhr
Verschoben von "Windows" nach "Batch & Shell".

Frage Entwicklung Batch & Shell

Batch oder Script - Feststellen ob lokaler Drucker installiert ist

Mitglied: SarekHL

SarekHL (Level 3) - Jetzt verbinden

18.03.2009, aktualisiert 08.08.2009, 8821 Aufrufe, 4 Kommentare

Hallo zusammen,

ich möchte mit einem VB-Script oder einer Batchdatei unter Windows 2000 folgendes tun:

1. Prüfen, ob ein lokaler Drucker installiert ist
2. Wenn ja, dann mit CON2PRT einen Netzwerkdrucker als Standarddrucker installieren (Option /CD)
3. Wenn nein, dann mit CON2PRT einen Netzwerkdrucker installieren, aber den lokalen Drucker als Standard lassen (Option /C)

Erschwerend kommt hinzu: Also lokaler Drucker sollen nur "echte" Drucker gelten, also nicht die Pseudo-Drucker vom Microsoft Imaging, irgendwelche PDF-Drucker usw.


Hat jemand eine Idee?


Danke,
André
Mitglied: 60730
07.08.2009 um 13:37 Uhr
Hallo Andre,

ich weiß ist schon älter und dieser Beitrag wurde bisher 360 mal aufgerufen.

Aber...

  • weil ich den selber erst jetzt gefunden habe - und dir bisher keiner helfen wollte...
  • ich ja immer dafür bin sich gegenseitig zu helfen
  • deine Überschrift so passt, das es eigentlich nicht sein darf, das dieser Thread unbeantwortet / ungelöst zu finden ist..

edit jau und nu hab ich das geschrieben und dabei auch schön gemerkt - das wird so nix....
(HKCU wird ja erst gefüllt, wenn der CU sich den Drucker besorgt hat)

Also nehm ich alles zurück und denk nochmal drüber nach...

"Du" bist selber Schuld - hättest du mal lieber nicht
1. Prüfen, ob ein lokaler Drucker installiert ist
sondern
1. Prüfen, ob ein lokaler Drucker angeschlossen ist geschrieben *lach*

Ergo den ganzen Kladderatsch wieder ändern in
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers


Mit W2K nur mit Reg.exe aus XP oder regedit /e

01.
regedit /E "%temp%\lpt.reg" "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices" 
02.
rem entweder gezielt nach LPT suchen 
03.
Find "LPT" %temp%\lpt.reg && goto lokal 
04.
Rem Oder komplexer zuerst Winspool filtern 
05.
Find "winspool" "%temp%\lpt.reg" | Find /V "Ne" goto lokal 
06.
echo kein lokaler Drucker gefunden 
07.
CON2PRT einen Netzwerkdrucker installieren, aber den lokalen Drucker als Standard lassen (Option /C) 
08.
goto end 
09.
:lokal 
10.
echo lokaler Drucker da 
11.
CON2PRT einen Netzwerkdrucker als Standarddrucker installieren (Option /CD) 
12.
del /q "%temp.reg"
Via reg.exe
01.
reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" |Find "winspool" |Find "/V" Ne && goto lokal 
02.
echo kein lokaler Drucker da, 
03.
CON2PRT einen Netzwerkdrucker installieren, aber den lokalen Drucker als Standard lassen (Option /C) 
04.
goto end 
05.
:lokal 
06.
echo lokaler drucker" 
07.
CON2PRT einen Netzwerkdrucker als Standarddrucker installieren (Option /CD) 
08.
:end
Gruß
Bitte warten ..
Mitglied: SarekHL
07.08.2009 um 14:08 Uhr
Hallo, und Danke erst mal für die Hilfe ...

Aber kapiert habe ich es noch nicht wirklich, also:

regedit /E "%temp%\lpt.reg" "HKEY_CURRENT_USER\Software\
Microsoft\Windows NT\CurrentVersion\Devices"

Da soll ich jetzt stattdessen "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" schreiben, richtig?


Find "LPT" %temp%\lpt.reg && goto lokal

Was soll er denn da jetzt konkret finden? In dem HKCU würde er dann ja solche Einträge wie "winspool,LPT1" finden, aber in dem genannten HKLM-Pfad stehen solche Angaben ja gar nicht. Höchsten "LPT1" als Port-Angabe in einem entsprechenden Unterverzeichnis. Durchsucht der Befehl auch Unterverzeichnisse?

ABER ... jetzt kommt das große "Aber": Was ist, wenn es sich um einen USB-Drucker handelt? Da steht dann nichts von LPT. In dem HKLM-Pfad steht stattdessen z.B. "USB002" und in dem HKCU-Pfad steht (bei mir) was mit "NE" ...

Allerdings habe ich jetzt erst mal nur bei mir zuhause nachgeschaut, da ist allerdings XP installiert und kein Win2000.
Bitte warten ..
Mitglied: 60730
07.08.2009 um 14:48 Uhr
Zitat von SarekHL:
Hallo, und Danke erst mal für die Hilfe ...

Aber kapiert habe ich es noch nicht wirklich, also:

ja - da war ich wohl etwas zu voreilig ...

> regedit /E "%temp%\lpt.reg"
"HKEY_CURRENT_USER\Software\
> Microsoft\Windows NT\CurrentVersion\Devices"

Da soll ich jetzt stattdessen
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Print\Printers" schreiben, richtig?

Nein -leider nicht - der Ansatz war fürn allerwertesten...

ABER ... jetzt kommt das große "Aber": Was ist, wenn es sich um einen USB-Drucker handelt? Da steht dann nichts von LPT.

Yupp - daher auch die andere Variante mit dem Filtern..

da ist allerdings XP installiert und kein Win2000.
yupp auch bei mir...
01.
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\" /s |Find "HKEY">"%temp%\allprinters.log"  
02.
 
03.
for /f "delims==" %%a  in ("%temp%\allprinters.log" ) do ( 
04.
reg query "%%a\" /v |find "Port" |find "LPT" && Title %%A LPT Drucker gefunden 
05.
06.
 
07.
for /f "delims==" %%a  in ("%temp%\allprinters.log" ) do ( 
08.
reg query "%%a\" /v |find "Port" |find "USB" && Title %%a USB Drucker gefunden 
09.
10.
 
Wäre dann wohl eher der eine Ansatz zum weiterverfolgen.
Der andere wäre - den Beitrag nach Bereich "B wie Batch & Shell zu verschieben
Oder Besser ausgedrückt, nach Hilfe Bei Biber oder Bastla zu Betteln


Gruß

edit:

Oder noch Besser, selber schreiben - und ob elegant oder Channel Hauptsache es läuft
Ich wage zu Bezeifeln, dass meine Idee elegant war
Bitte warten ..
Mitglied: SarekHL
08.08.2009 um 08:44 Uhr
Hm, ich habe das jetzt auf zwei Computern ausprobiert und bekomme auf beiden eine Fehlermeldung:

ae33e51dd946797ae50a0916f99a0f3e-screenshot - Klicke auf das Bild, um es zu vergrößern


Aber Dein Ansatz hat mich auf eine Idee gebracht, und jetzt habe ich mir eine Lösung mit VB5 gebastelt. Sicher nicht die eleganteste, aber sie funktioniert:

01.
Private Sub Form_Load() 
02.
Call RegExport 
03.
Call Verbinden 
04.
Dim oForm As Form 
05.
For Each oForm In VB.Forms 
06.
  Unload oForm 
07.
Next 
08.
End Sub 
09.
 
10.
 
11.
Sub RegExport() 
12.
temppfad = Environ$("temp") 
13.
Befehlszeile = "regedit /E " + temppfad + "\allprinters.log " + Chr(34)  + "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\" + Chr(34) 
14.
Shell Befehlszeile, vbHide 
15.
End Sub 
16.
 
17.
 
18.
Sub Verbinden() 
19.
If Auslesen() = 1 Then 
20.
 MsgBox "Lokaler Drucker ist vorhanden" 
21.
Else 
22.
 MsgBox "Kein lokaler Drucker vorhanden" 
23.
End If 
24.
End Sub 
25.
 
26.
 
27.
Function Auslesen() 
28.
Auslesen = 0 
29.
temppfad = Environ$("temp") 
30.
Dateiname = temppfad + "\allprinters.log" 
31.
Open Dateiname For Input As 1 
32.
Do While Not EOF(1) 
33.
  Line Input #1, zeile 
34.
  laenge = Len(zeile) 
35.
  If Mid(zeile, 2, 4) <> "Port" Then GoTo Naechste: 
36.
  For zaehler = 6 To laenge - 6 
37.
    If Mid(zeile, zaehler, 3) = "USB" Then Auslesen = 1 
38.
    If Mid(zeile, zaehler, 3) = "LPT" Then Auslesen = 1 
39.
  Next zaehler 
40.
  Naechste: 
41.
  Loop 
42.
Ende: 
43.
Close 1 
44.
End Function
Bitte warten ..
Ähnliche Inhalte
Monitoring
SNMP Traps lokal installierter Drucker
Frage von seltsamMonitoring3 Kommentare

Guten Morgen verehrte Gemeinde. Letzte Woche haben wir ein Drucksystemrollout durchgeführt, welches mir nun ebenfalls die zentrale Kontrolle aller ...

Batch & Shell
Batch Drucker Script
gelöst Frage von Angelo131095Batch & Shell3 Kommentare

Guten Tag, mein Name ist Angelo, ich Helfe unserem Administrator in der Schule und habe ein Script für die ...

Windows 10
Batch: Copy file.txt Lokaler Drucker
Frage von flulukWindows 101 Kommentar

Hallo, auch wenn es sich hier um ein Batchprogramm handelt, denke ich es passt eher in Windows 10, da ...

Windows Netzwerk
Feststellen, welche PCs und Laptops eine bestimmte EXE installiert haben
Frage von smartinoWindows Netzwerk7 Kommentare

Hallo zusammen, um den Bildschirmschoner zu umgehen haben einige User das Programm Move Mouse.exe installiert. Installiert ist zu viel ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 51 MinutenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 18 StundenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 19 StundenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 20 StundenSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von 92943Windows 1031 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell29 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
gelöst Frage von Windows10GegnerNetzwerkgrundlagen21 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...