Okay, folgendes Ziel:
Wir wollen mit einem Batch Script aus einer Textdatei eine Textzeile löschen oder filtern (alles andere löschen).
Praktisches Beispiel:
Das im letzten Post beschriebene Thunderbird Problem soll auf allen Computern eines Netzwerks behoben werden. Die Zeile muss also aus der Einstellungsdatei jedes Nutzers gelöscht werden. Also ein Anmeldescript.
Der Vorgang besteht aus 2 Schritten:
1. Die gewünschte Zeile finden.
2. Diese Zeile oder alle anderen Zeilen löschen.
Text finden:
findstr /b /v /i /c:user_pref(\"print.print_printer\" c:\pfad\zur\prefs.js
Damit wird die komplette Zeile mit dem Anfang
user_pref("print.print_printer"
Zeile löschen (mit Loggingfunktion):
@echo off title Reset Thunderbird Default Printer set logdir=\\server\pfad\ cd /d "%appdata%\Thunderbird\Profiles\" cd *.default if exist prefs_backup.js del prefs_backup.js if errorlevel 1 goto fehler ping 127.0.0.1 >> nul ren prefs.js prefs_backup.js if errorlevel 1 goto fehler findstr /b /v /i /c:user_pref(\"print.print_printer\" prefs_backup.js > prefs.js if errorlevel 1 goto fehler echo %date% %time% %computername% - Reset erfolgreich >> %logdir%\log.txt goto end :fehler echo %date% %time% %computername% - Reset fehlerhaft >> %logdir%\log.txt :end
Zeile löschen (pure):
@echo off cd /d "%appdata%\Thunderbird\Profiles\" cd *.default if exist prefs_backup.js del prefs_backup.js ren prefs.js prefs_backup.js findstr /b /v /i /c:user_pref(\"print.print_printer\" prefs_backup.js > prefs.js
Und falls man einen Überblick über alle verwendeten Thunderbird drucken haben möchte:
Zeile filtern:
@echo off cd /d "%appdata%\Thunderbird\Profiles\" cd *.default findstr /b /l /i /c:user_pref(\"print.print_printer\" prefs.js >> \\server\pfad\all_prefs.txt
Die Funktionalität des filterns beschränkt sich tatsäch nur darauf, diese 1 Zeile aller Benutzer, auf die das Anmeldescript angewendet wird, zusammenzutragen. Das ließe sich natürlich mit entsprachenden echo Befehlen noch detaillierter loggen.
Die genauere Erklärung der
findstr
Parameter erhaltet ihr in der cmd mit
findstr /?
, ist eigentlich alles sehr eindeutig.
Hallo.
Seit längerem habe ich das Problem, dass Thunderbird in unregelmässigen Abständen den Standarddrucker vergisst und ich ungewollt auf dem falschen Drucker lande. Wie das Problem händisch zu lösen ist, ist mir bekannt. Doch Thunderbird macht das so häufig, dass es schon recht lästig ist. Ihre Anleitung wäre da ein guter Weg, den Standarddrucker jeweils beim Start von Thunderbird zu löschen, wodurch nur noch der Standarddrucker von Windows zum Tragen kommt. Ihre Anleitung für einen Server ist sehr detailliert, aber für mich als nicht Fachmann etwas zu kompliziert. Ist es Ihnen möglich, eine Anleitung für einen einzelnen Rechner zu posten, den man einfach mit den entsprechenden Pfadangaben korrigieren könnte?
Freundliche Grüsse
raetus-stocker
Hallo raetus-stocker,
der zweite Code, unter „Zeile löschen (pure)“, enthält einen allgemeingültigen Code, der auch auf deinem PC funktionieren sollte. Es wird die prefs Datei des Standard-Thunderbird-Profils bearbeitet, da musst du also nicht einmal Pfade anpassen. In der letzten Zeile wird angegeben, dass alle „print.printer_“… Einträge gelöscht werden.
Du könntest also den Code per Batch ausführen und eine weitere Zeile am Ende hinzufügen, die Thunderbird dann startet. Wäre wie eine Thunderbird-Verknüpfung mit vorher-Bereinigung.
LG
Bei mir kommt TunterbirdPortable zum Einsatz, darum habe ich die genauen Pfadangaben eingesetzt. Das Script funktioniert bei mir leider nicht. Es müsste doch die Zeile mit „print.print_printer“ suchen und löschen.
Unverständlich ist mir diese Zeile:
findstr /b /v /i /c:user_pref(\„print.print_printer\“ prefs_backup.js > prefs.js
findstr [Suche nach Zeichenfolge]
/b [überprüft den Zen Zeilenanfang auf Übereinstimmung mit der Zeichenfolge]
/v [zeigt die Zeilen an, die die Zeichen nicht enthalten]
prefs_backup.js > prefs.js [schreibt Ausbabe von prefs_backup.js in prefs.js]
Das Script müsste doch eine Zeile löschen oder den Wert zurücksetzen.
Auch wird offenbar /v nicht ausgegeben
Irgendwie hab ich es noch nicht geschnallt. Wo liege ich falsch?
LG
/i [Gross- und Kleinschreibung nicht beachten]
/c:user_pref(\„print.print_printer\“ [sucht Zeichenfolge „print.print_printer\„]