Con2prt.exe Problem mit Zeilenumbruch (Batchcode)
Moin moin,
Ich habe folgendes Problem:
Ich möchte mithilfe von CMD und con2prt.exe alle derzeitigen Netzwerkdrucker entfernen und diese in eine .txt Datei speichern. Da wir einen neuen Printserver haben, möchte ich nun aus der .txt die Werte wieder rausholen, den ALTEN Server durch den NEUEN Server ersetzen und mithilfe von con2prt.exe die zuvor verfügbaren Drucker nun vom NEUEN Printserver wieder verbinden.
So sieht's bei mir bis jetzt aus:
Als Erklärung:
Zurerst habe ich die installierten Netzwerkdrucker mit "con2prt.exe /f > C:\drucker.txt" gelöscht und in die TXT Datei drucker.txt gespeichert, in der folgendes steht:
"Removed connection to printer: \\ALTERDRUCKSERVER\DRUCKER1
Removed connection to printer: \\ALTERDRUCKSERVER\DRUCKER2"
Da ich für con2prt.exe jedoch nur Servername und Drucker brauche, verwende ich die For Schleife mit Begrenzung auf Token 5 und delimiter Leerzeichen. Speichere dies in Variable.
Daraufhin will ich mit
die Drucker verbinden (Ich habe hier noch nicht versucht, den ALTEN auf NEUEN Druckserver zu ändern, weil ich erstmal versuchen wollte, ob es überhaupt so funktionieren kann). Dabei kam allerdings die oben zu sehende Fehlermeldung...
Meine Vermutung: --> Zeilenumbrüche in der TXT Datei ! <--
Ich also 2.Zeile in der TXT Datei gelöscht, sodass nur eine Zeile, sprich ein Drucker drin ist, und er stellte die Verbindung ohne jegliche Fehlermeldung her.
Weiß jemand, wie ich diesen Fehler umgehen kann, sodass mehrere Zeilen aus der TXT Datei ausgelesen und bearbeitet werden können?
Weiß jemand evtl auch, wie ich die Werte aus der TXT Datei lesen, und den ALTEN Druckserver in den NEUEN dabei ändern kann? (evtl. über in neue Variable speichern, wenn im Namen des ALTEN bestimmte Zahlen entdeckt werden?)
Grüße, narthan
Ich habe folgendes Problem:
Ich möchte mithilfe von CMD und con2prt.exe alle derzeitigen Netzwerkdrucker entfernen und diese in eine .txt Datei speichern. Da wir einen neuen Printserver haben, möchte ich nun aus der .txt die Werte wieder rausholen, den ALTEN Server durch den NEUEN Server ersetzen und mithilfe von con2prt.exe die zuvor verfügbaren Drucker nun vom NEUEN Printserver wieder verbinden.
So sieht's bei mir bis jetzt aus:
C:\Windows\system32>for /f "tokens=5 delims= " %i in (C:\Drucker.txt) do @echo %i
\\ALTERDRUCKSERVER\DRUCKER1
\\ALTERDRUCKSERVER\DRUCKER2
----
C:\Windows\system32>C:\Users\user123\Desktop\con2prt.exe
CON2PRT: Lets the user disconnect all existing connections to Windows NT
printers and connect to newly specified Windows NT printers.
Usage: CON2PRT [ /? | /h | /f |
[/c \\printserver\share | /cd \\printserver\share]+]
where:
/? - displays usage.
/h - displays usage.
/f - deletes all existing printer connections.
/c - connects to \\printserver\share printer.
/cd - connects to \\printserver\share printer and sets it as the default
printer.
C:\Windows\system32>for /f "tokens=5 delims= " %i in (C:\drucker.txt) do C:\Users\use123\Desktop\con2prt.exe
/c %i
:\Windows\system32>C:\Users\user123\Desktop\con2prt.exe /c \\ALTERDRUCKSERVER\DRUCKER1
.ailed to connect to Windows NT printer: \\ALTERDRUCKSERVER\DRUCKER1
Please check to see that the printer exists.
:\Windows\system32>C:\Users\user123\Desktop\con2prt.exe /c \\ALTERDRUCKSERVER\DRUCKER2
.ailed to connect to Windows NT printer: \\ALTERDRUCKSERVER\DRUCKER2
Please check to see that the printer exists.
----
C:\Windows\system32>C:\Users\user123\Desktop\con2prt.exe /c \\ALTERDRUCKSERVER\DRUCKER1
Connected to printer: \\ALTERDRUCKSERVER\DRUCKER1.
Als Erklärung:
Zurerst habe ich die installierten Netzwerkdrucker mit "con2prt.exe /f > C:\drucker.txt" gelöscht und in die TXT Datei drucker.txt gespeichert, in der folgendes steht:
"Removed connection to printer: \\ALTERDRUCKSERVER\DRUCKER1
Removed connection to printer: \\ALTERDRUCKSERVER\DRUCKER2"
Da ich für con2prt.exe jedoch nur Servername und Drucker brauche, verwende ich die For Schleife mit Begrenzung auf Token 5 und delimiter Leerzeichen. Speichere dies in Variable.
Daraufhin will ich mit
C:\Windows\system32>for /f "tokens=5 delims= " %i in (C:\drucker.txt) do C:\Users\user123\Desktop\con2prt.exe
/c %i
Meine Vermutung: --> Zeilenumbrüche in der TXT Datei ! <--
Ich also 2.Zeile in der TXT Datei gelöscht, sodass nur eine Zeile, sprich ein Drucker drin ist, und er stellte die Verbindung ohne jegliche Fehlermeldung her.
Weiß jemand, wie ich diesen Fehler umgehen kann, sodass mehrere Zeilen aus der TXT Datei ausgelesen und bearbeitet werden können?
Weiß jemand evtl auch, wie ich die Werte aus der TXT Datei lesen, und den ALTEN Druckserver in den NEUEN dabei ändern kann? (evtl. über in neue Variable speichern, wenn im Namen des ALTEN bestimmte Zahlen entdeckt werden?)
Grüße, narthan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 223647
Url: https://administrator.de/contentid/223647
Ausgedruckt am: 08.11.2024 um 11:11 Uhr
9 Kommentare
Neuester Kommentar
Das sind ursprünglich Unix-Programme: sed for Windows,
lg.
tr
ist hier bei: CoreUtils for Windows. Ältere Versionen ohne Installations"zwang" gibts hier.lg.
Hmm, ich sehe gerade, dass sich die zwei von mir verlinkten sed's unterschiedlich verhalten
Nimm entweder dieses sed for Windows oder
lg.
Nimm entweder dieses sed for Windows oder
tr
, damit gibt's keine Probleme.lg.