TXT per batch Auslesen und Zeilen vergleichen sowie wenn nötig ersetzten bzw. löschen
Hallo Community,
Mein Ziel ist es eine .pbk Datei (DFÜ-Verbindungen) auszulesen und wenn nötig die Datei zu verändern.
Der Aufbau der Datei sieht immer volgendermaßen aus!
Jeder neue Verbindungseintrag (in der .pbk)startet mit einen "[" und endet dann erst wieder mit dem neuen Eintrag ebenfalls start mit "[" oder ende der Datei!
Als beispiel jemand hat eine ältere Datei mit einer Verbindung zu AOL, da diese jetzt ungültig ist müsste Sie durch eine von Arcor ersetzt werden! Aber der T-online Eintrag ist richtig und soll so bleiben!
Wie würdet ihr vorgehen, habe einfach zu wenig erfahrung mit batch dateien!
Vielen Dank für eure Hilfe
Gruß
Mein Ziel ist es eine .pbk Datei (DFÜ-Verbindungen) auszulesen und wenn nötig die Datei zu verändern.
Der Aufbau der Datei sieht immer volgendermaßen aus!
Jeder neue Verbindungseintrag (in der .pbk)startet mit einen "[" und endet dann erst wieder mit dem neuen Eintrag ebenfalls start mit "[" oder ende der Datei!
Als beispiel jemand hat eine ältere Datei mit einer Verbindung zu AOL, da diese jetzt ungültig ist müsste Sie durch eine von Arcor ersetzt werden! Aber der T-online Eintrag ist richtig und soll so bleiben!
Wie würdet ihr vorgehen, habe einfach zu wenig erfahrung mit batch dateien!
Vielen Dank für eure Hilfe
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 53286
Url: https://administrator.de/forum/txt-per-batch-auslesen-und-zeilen-vergleichen-sowie-wenn-noetig-ersetzten-bzw-loeschen-53286.html
Ausgedruckt am: 23.12.2024 um 17:12 Uhr
8 Kommentare
Neuester Kommentar
Hallo transwarp!
Für das Hinzufügen der neuen Verbindungsdaten könntest Du zunächst einmal die neuen Daten in eine "Neu.txt" schreiben und einfach an die "Aktuell.pbk" anfügen - in Batch etwa so:
Für das Entfernen der veralteten Einträge wäre es vielleicht sinnvoll, zunächst einmal ein Beispiel für den Inhalt einer .pbk-Datei zu posten.
Grüße
bastla
Für das Hinzufügen der neuen Verbindungsdaten könntest Du zunächst einmal die neuen Daten in eine "Neu.txt" schreiben und einfach an die "Aktuell.pbk" anfügen - in Batch etwa so:
if exist Alt.pbk del Alt.pbk
ren Aktuell.pbk Alt.pbk
copy Alt.pbk + Neu.txt Aktuell.pbk
Für das Entfernen der veralteten Einträge wäre es vielleicht sinnvoll, zunächst einmal ein Beispiel für den Inhalt einer .pbk-Datei zu posten.
Grüße
bastla
Hallo transwarp!
Soferne in der .pbk-Datei (ich habe derzeit leider keine zum Testen bei der Hand) nicht irgendwelche störenden Sonderzeichen enthalten sind, könnte der folgende Batch funktionieren:
Wenn die Batchdatei nach Anpassung der Pfade für "Alt" und "Neu" zB als "C:\Scripts\EntferneAusPBK.bat" gespeichert wurde, wäre sie wie folgt aufzurufen:
Dass alle ev enthaltenen Leerzeilen abhanden kommen, müsste zu verkraften sein. Sollte es mit Batch nicht klappen (Sonderzeichen), ließe sich der selbe Ablauf auch als VBScript umsetzen.
Grüße
bastla
[Edit] Parameter angepasst [/Edit]
[Edit2] set "Suche=%2" um ~ ergänzt [/Edit2]
Soferne in der .pbk-Datei (ich habe derzeit leider keine zum Testen bei der Hand) nicht irgendwelche störenden Sonderzeichen enthalten sind, könnte der folgende Batch funktionieren:
@echo off & setlocal
rem Parameter 1 = .pbk-Datei
rem Parameter 2 = Suchstring, zB [AOL]
if not exist "%~1" goto :Verwendung
if (%2) neq () goto :Ausf
:Verwendung
echo Beim Aufruf einen existierenden Dateinamen und den Suchstring angeben!
goto :eof
:Ausf
set "Suche=%~2"
set "AltName=Alt.pbk"
set "Alt=%~dp1%AltName%"
set "Neu=%~1"
if exist "%Alt%" del "%Alt%"
ren "%Neu%" "%AltName%"
set Behalten=ja
for /f "delims=" %%i in ('type "%Alt%"') do call :BearbeiteZeile "%%i"
echo %Suche% wurde entfernt.
goto :eof
:BearbeiteZeile
set "Zeile=%~1"
if %Behalten%==ja goto :Kontrolle
if %Zeile:~0,1% neq [ goto :eof
set Behalten=ja
goto :Schreiben
:Kontrolle
(echo %Zeile%)|find /i "%Suche%">nul || goto :Schreiben
set Behalten=nein
goto :eof
:Schreiben
(echo %Zeile%)>>"%Neu%"
goto :eof
C:\Scripts\EntferneAusPBK.bat "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Microsoft\Network\Connections\Pbk\rasphone.pbk" [AOL]
Grüße
bastla
[Edit] Parameter angepasst [/Edit]
[Edit2] set "Suche=%2" um ~ ergänzt [/Edit2]
...oder, da diese *.pbk ja offensichtlich denselben Aufbau hat wie eine beliebige Windows-.ini-Datei, wäre eventuell eine kurze Suchmaschinenbefragung nach "IniTools" (oder ähnlich) hilfreich.
Es gibt diverse Freeware-Hilfsutilities, die Ini-Daten "[Section]"-weise ergänzen, löschen, bearbeiten können.
Ein native batch wäre hier, da stimme ich bastla zu, sicherlich nur die dritt- oder viertschlechteste Alternative.
Gruss
Biber
Es gibt diverse Freeware-Hilfsutilities, die Ini-Daten "[Section]"-weise ergänzen, löschen, bearbeiten können.
Ein native batch wäre hier, da stimme ich bastla zu, sicherlich nur die dritt- oder viertschlechteste Alternative.
Gruss
Biber
Hallo transwarp!
Vielleicht nicht ganz elegant, aber hoffentlich doch effektiv:
Damit wird zwar die .pbk-Datei für jeden einzelnen "[AOL ...]"-Eintrag (Anführungszeichen bitte nicht vergessen) einmal durchgeackert, aber damit solltest Du alle Einträge mit einem einzelnen Aufruf los werden ...
Falls die "Sicherung.pbk" nicht benötigt wird (auf "Alt.pbk" kann man sich jetzt nicht mehr verlassen, da diese bei jedem Durchlauf mit dem Ergebnis des vorigen Durchlaufs überschrieben wird), einfach die erste Zeile weglassen.
Die zweite Zeile ist für eine Verwendung in einer Batchdatei geschrieben - von der Commandline wäre jedes %% durch ein einfaches % zu ersetzen.
Vor dem Testen solltest Du noch in der Batchdatei ("EntferneAusPBK.bat") eine Zeile ändern, indem Du sie mit ~ ergänzt (hätte auch in der ursprünglichen Fassung schon hingehört - ich trage es auch oben nach):
Grüße
bastla
Vielleicht nicht ganz elegant, aber hoffentlich doch effektiv:
copy /y "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Microsoft\Network\Connections\Pbk\rasphone.pbk" "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Microsoft\Network\Connections\Pbk\Sicherung.pbk" > nul
for %%s in ("[AOL MODEM]" "[AOL ISDN]" "[AOL DSL]") do C:\Scripts\EntferneAusPBK.bat "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Microsoft\Network\Connections\Pbk\rasphone.pbk" "%%~s"
Falls die "Sicherung.pbk" nicht benötigt wird (auf "Alt.pbk" kann man sich jetzt nicht mehr verlassen, da diese bei jedem Durchlauf mit dem Ergebnis des vorigen Durchlaufs überschrieben wird), einfach die erste Zeile weglassen.
Die zweite Zeile ist für eine Verwendung in einer Batchdatei geschrieben - von der Commandline wäre jedes %% durch ein einfaches % zu ersetzen.
Vor dem Testen solltest Du noch in der Batchdatei ("EntferneAusPBK.bat") eine Zeile ändern, indem Du sie mit ~ ergänzt (hätte auch in der ursprünglichen Fassung schon hingehört - ich trage es auch oben nach):
set "Suche=%<b>~</b>2"
Grüße
bastla