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.