Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

TXT per batch Auslesen und Zeilen vergleichen sowie wenn nötig ersetzten bzw. löschen

Frage Entwicklung Batch & Shell

Mitglied: transwarp

transwarp (Level 1) - Jetzt verbinden

06.03.2007, aktualisiert 09.03.2007, 7455 Aufrufe, 8 Kommentare

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ß
Mitglied: bastla
06.03.2007 um 22:55 Uhr
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:
01.
if exist Alt.pbk del Alt.pbk 
02.
ren Aktuell.pbk Alt.pbk 
03.
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
Bitte warten ..
Mitglied: transwarp
06.03.2007 um 23:07 Uhr
Hey bastla, erstmal vielen Dank für deine Antwort!

Die idee hatte ich auch schon und so ähnlich wie du in die Tat umgestezt allerdings mit einer for schleife! Das hat auch alles geklappt!

Aufbau der .pbk Datei ist immer gleich! (denke ich zumindestens)
Liegt übrigens "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Microsoft\Network\Connections\Pbk" in diesem Verzeichniss

Jede Verbindung beginnt mit

[Verbindungsname]
"verschiedene Werte"
......
......

endet leider erst wieder mit dem neuanfang eines [ bzw. dem Ende der Datei.

Habe leider bis jetzt noch keine Lösung gefunden und wäre über weitere Hilfe dankbar!

Gruß
Bitte warten ..
Mitglied: bastla
06.03.2007 um 23:57 Uhr
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:
01.
@echo off & setlocal 
02.
rem Parameter 1 = .pbk-Datei 
03.
rem Parameter 2 = Suchstring, zB [AOL] 
04.
if not exist "%~1" goto :Verwendung 
05.
if (%2) neq () goto :Ausf 
06.
:Verwendung 
07.
echo Beim Aufruf einen existierenden Dateinamen und den Suchstring angeben! 
08.
goto :eof 
09.
:Ausf 
10.
set "Suche=%~2" 
11.
set "AltName=Alt.pbk" 
12.
set "Alt=%~dp1%AltName%" 
13.
set "Neu=%~1" 
14.
if exist "%Alt%" del "%Alt%" 
15.
ren "%Neu%" "%AltName%" 
16.
set Behalten=ja 
17.
for /f "delims=" %%i in ('type "%Alt%"') do call :BearbeiteZeile "%%i" 
18.
echo %Suche% wurde entfernt. 
19.
goto :eof 
20.
:BearbeiteZeile 
21.
set "Zeile=%~1" 
22.
if %Behalten%==ja goto :Kontrolle 
23.
if %Zeile:~0,1% neq [ goto :eof 
24.
set Behalten=ja 
25.
goto :Schreiben 
26.
:Kontrolle 
27.
(echo %Zeile%)|find /i "%Suche%">nul || goto :Schreiben 
28.
set Behalten=nein 
29.
goto :eof 
30.
:Schreiben 
31.
(echo %Zeile%)>>"%Neu%" 
32.
goto :eof
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:
01.
C:\Scripts\EntferneAusPBK.bat "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Microsoft\Network\Connections\Pbk\rasphone.pbk" [AOL]
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]
Bitte warten ..
Mitglied: Biber
07.03.2007 um 10:25 Uhr
...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
Bitte warten ..
Mitglied: transwarp
07.03.2007 um 10:34 Uhr
Hi ja klar wäre eine alternative aber denke nicht das dies das Ziel ist, da dieses tool auf vielen Rechnern laufen soll und nicht nur die vorhandenen DFÜ Verbindungen ersetzten soll! Da es unterschiedliche konfigurationen gibt!

Ziel des Batch ist eine zusätzliche Einrichtung einer neuen DFÜ-Verbindung sowie löschen von bestimmten DFÜ-Verbindungen(wenn vorhanden)!

Bin leider Neu auf dem gebiet der Batch und würde mich über hilfe freuen!

LG
Bitte warten ..
Mitglied: transwarp
08.03.2007 um 11:15 Uhr
Hallo Community, vielleicht kann ja jemand nochmal helfen erstmal vielen Dank an Bastla! TOP!

Das Ausführen des Scripts funktioniert aber wenn als beispiel mehrer [AOL] verbindungen vorhanden sind(wir gehen mal von 4 STück aus) überspringt er jedesmal die zwischenliegende!

[AOL MODEM]
werte...
........

[AOL ISDN] <- diese wird jedesmal übersprungen und wird erst bei 2tem ausführen gelöscht.
werte...
..........

[AOL DSL]
werte...
.........

Das Script sucht ja immer nach "["

Wer kann mir helfen es zu optimieren?
Bitte warten ..
Mitglied: bastla
08.03.2007 um 13:48 Uhr
Hallo transwarp!

Vielleicht nicht ganz elegant, aber hoffentlich doch effektiv:
01.
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 
02.
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"
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):
01.
set "Suche=%<b>~</b>2"
Grüße
bastla
Bitte warten ..
Mitglied: transwarp
09.03.2007 um 11:49 Uhr
Hallo ihr,

Tool funktioniert jetzt ganz gut und läuft auch durch!

Nun zu meiner Frage ich habe jetzt das Problem, dass wenn ich die Daten ersetzt bzw. getauscht habe, und später die erweiterten Eigenschaften aufrufen will der Explorer.exe abstürzt! (Rechtsklick auf DFÜ-Verbindung ->Eigenschaften -> Netzwerkverbindung auswählen -> Rechstklick -> Erweitert) normalerweise sind dort die Infos für Firewalleinstellungen etc. drinn! Kann es sein das ich noch irgendwelche REG einträge brauche die ich nicht besitzte!? Habe schon geguckt er erstellt leider nichts neues beim Anlegen einer neuen Verbindung in der REG zumindestens habe ich nichts gefunden! Daten in der RASPHONE.pbk passen auch und sind identisch!

Folgende Fehlermeldung gibt er aus:
AppName: explorer.exe AppVer: 6.0.2900.2180 ModName: hnetcfg.dll
ModVer: 5.1.2600.2180 Offset: 00018251
Der Problembericht ist Kilometer lang


Habe mir mal die hnetcfg angeguckt, Sie ist für den HOME Network Config Manager zuständig(deswegen auch der Name) Habe die neues von Microsoft veröffentlichte Version!

Mein System

MS Win XP Pro
SP2 V. 2002



Gruß
Transwarp
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch Änderungsdatum von Dateien vergleichen und ältere löschen (10)

Frage von 129528 zum Thema Batch & Shell ...

Batch & Shell
Powershell - Zeilen in einer csv löschen bis (7)

Frage von Franz-Josef-II zum Thema Batch & Shell ...

Batch & Shell
Daten nach dem auslesen per Powershell moven - kopieren - löschen (1)

Frage von Luckyyluck zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (24)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...