Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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
GELÖST

Mit Batch eine XML-Datei bearbeiten

Frage Entwicklung Batch & Shell

Mitglied: Apokalypso

Apokalypso (Level 1) - Jetzt verbinden

23.03.2011 um 14:39 Uhr, 12415 Aufrufe, 4 Kommentare

Hallo zusammen,

ich bin seit einiger Zeit hier im Forum unterwegs, um eine Lösung auf mein Problem zu finden. Ich habe mir einige Code schnipsel aus diesen und anderen Foren zusammengesetzt und bin nun nahe der Lösung.

Situation:
Im Unternehmen haben wir rund 600 User die mit PGP arbeiten, leider befindet sich in einer der Konfigurations-Dateien (XML-Datei) ein Fehler. Die User arbeiten mit Windows XP, Vista, und 7.
Mit einer Batch-Datei möchte ich eine Zeile, die zwei mal vorkommt, verändern bzw. bearbeiten.

Von: \\XXX\data\userdaten\%USERNAME%\pgp\secring.skr
Nach: \\XXX\data\userdaten\%USERNAME%\pgp\Lokal\secring.skr

Leider hat mein Code ein Problem mit "<string> .... </string>". Die Sonderzeichen, werden nicht erkannt.
Es wäre klasse wenn einer den Fehler finden könnte bzw. mir mit meinem Problem weiter hilft.

XML Ausschnitt:
...
<key>privateKeyringFile</key>
<string>\\XXX\data\userdaten\Vorname.Nachname\pgp\secring.skr</string>
<key>publicKeyringFile</key>
<string>\\XXX\data\userdaten\Vorname.Nachname\\pgp\secring.skr</string>
</dict>
...

Batch-Datei:

@ECHO off
SETLOCAL enabledelayedexpansion

SET "quell_datei=C:\Users\%USERNAME%\Desktop\PGP_Config.xml"
SET "ziel_datei=C:\Users\%USERNAME%\Desktop\PGP_Config_new.xml"
SET "suchen_nach=\\XXX\data\userdaten\%USERNAME%\pgp\secring.skr"
SET "ersetzen_durch=\\XXX\data\userdaten\%USERNAME%\pgp\lokal\secring.skr"

REM Quell-Datei zeilenweise auslesen
REM und in Variable "zeile" schreiben
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (
SET zeile=%%i& CALL :ersetzen !zeile!
)
GOTO :weiter
:ersetzen
REM innerhalb der Variable "zeile"
REM den Inhalt der Variable "suchen_nach" suchen
REM und diese durch den Inhalt der Variable "ersetzen_durch" ersetzen
SET zeile=!zeile:%suchen_nach%=%ersetzen_durch%!

REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben
IF [!zeile!] EQU [] (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%)
GOTO :eof

:weiter
REM weitere Verarbeitung

ECHO Fertig.

Vielen Danke schon mal.
Apokalypso
Mitglied: bastla
23.03.2011 um 15:24 Uhr
Hallo Apokalypso und willkommen als Mitglied im Forum!

Manchmal wirken ein paar Anführungszeichen Wunder (die übrigen Änderungen sind mehr kosmetischer Natur [Edit] mit Ausnahme der Vermeidung des überflüssigen Unterprogramm-Aufrufparameters !zeile! - dem fehlten nämlich die Anführungszeichen [/Edit]):
01.
@ECHO off & SETLOCAL enabledelayedexpansion 
02.
 
03.
SET "quell_datei=C:\Users\%USERNAME%\Desktop\PGP_Config.xml" 
04.
SET "ziel_datei=C:\Users\%USERNAME%\Desktop\PGP_Config_new.xml" 
05.
SET "suchen_nach=\\XXX\data\userdaten\%USERNAME%\pgp\secring.skr" 
06.
SET "ersetzen_durch=\\XXX\data\userdaten\%USERNAME%\pgp\lokal\secring.skr" 
07.
 
08.
REM Quell-Datei zeilenweise auslesen 
09.
REM und in Variable "zeile" schreiben 
10.
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO SET "zeile=%%i" & CALL :ersetzen 
11.
GOTO :weiter 
12.
 
13.
:ersetzen 
14.
REM innerhalb der Variable "zeile" 
15.
REM den Inhalt der Variable "suchen_nach" suchen 
16.
REM und diese durch den Inhalt der Variable "ersetzen_durch" ersetzen 
17.
SET "zeile=!zeile:%suchen_nach%=%ersetzen_durch%!" 
18.
 
19.
REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben 
20.
ECHO.!zeile!>>"%ziel_datei%" 
21.
GOTO :eof 
22.
 
23.
:weiter 
24.
REM weitere Verarbeitung 
25.
 
26.
ECHO Fertig.
Das "ECHO" in Zeile 20 würde zwar auch in der verkürzten Schreibweise Leerzeilen richtig ausgeben, allerdings überleben letztere ohnehin die "FOR"-Schleife nicht (womit sich auch "FINDSTR" in der derzeitigen Form einsparen ließe) ...

Grüße
bastla

P.S.: Da Du doch sicher wissen willst, wie hier "Code"-Formatierung zu erreichen ist: http://www.administrator.de/helpsystem/detail.php?idx=20#toc28
Bitte warten ..
Mitglied: Apokalypso
23.03.2011 um 16:05 Uhr
Hallo bastla,

danke für die schnelle Antwort.

[Edit]
Ich habe einen Denkfehler gehabt. Der Code ist vollkommen richtig.

[/Edit]

mfg Apokalypso
Bitte warten ..
Mitglied: bastla
23.03.2011 um 16:45 Uhr
Hallo Apokalypso!
Ich habe einen Denkfehler gehabt. Der Code ist vollkommen richtig.
Gratuliere - einen volkommenen Code habe ich bis jetzt noch nicht geschafft (vielleicht mit Ausnahme von "@echo Hello world!") ...

Grüße
bastla
Bitte warten ..
Mitglied: Apokalypso
23.03.2011 um 17:06 Uhr
Danke für deine Hilfe.

Den vollständigen Code hänge ich nocheinmal an.


01.
@ECHO off & SETLOCAL enabledelayedexpansion  
02.
 
03.
SET "quell_datei=%USERPROFILE%\XXX\PGP\PGPprefs.xml"  
04.
SET "ziel_datei=%USERPROFILE%\XXX\PGP\PGPprefs_new.xml"  
05.
SET "suchen_nach_1=\\XXX\data\userdaten\%USERNAME%\pgp\secring.skr"  
06.
SET "ersetzen_durch_1=\\XXX\data\userdaten\%USERNAME%\pgp\lokal\secring.skr"  
07.
 
08.
SET "suchen_nach_2=\\XXX\data\userdaten\%USERNAME%\pgp\pubring.pkr"  
09.
SET "ersetzen_durch_2=\\XXX\data\userdaten\%USERNAME%\pgp\lokal\pubring.pkr" 
10.
 
11.
SET "suchen_nach_3=X:\pgp"  
12.
SET "ersetzen_durch_3=X:\pgp\lokal" 
13.
 
14.
REM Quell-Datei zeilenweise auslesen  
15.
REM und in Variable "zeile" schreiben  
16.
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO SET "zeile=%%i" & CALL :ersetzen  
17.
GOTO :weiter  
18.
 
19.
:ersetzen  
20.
REM innerhalb der Variable "zeile"  
21.
REM den Inhalt der Variable "suchen_nach" suchen  
22.
REM und diese durch den Inhalt der Variable "ersetzen_durch" ersetzen  
23.
SET "zeile=!zeile:%suchen_nach_1%=%ersetzen_durch_1%!" 
24.
  
25.
SET "zeile=!zeile:%suchen_nach_2%=%ersetzen_durch_2%!" 
26.
 
27.
SET "zeile=!zeile:%suchen_nach_3%=%ersetzen_durch_3%!" 
28.
 
29.
REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben  
30.
ECHO.!zeile!>>"%ziel_datei%"  
31.
GOTO :eof  
32.
 
33.
:weiter  
34.
 
35.
rename "%USERPROFILE%\XXX\PGPprefs.xml" PGPprefs_old.xml 
36.
rename "%USERPROFILE%\XXX\PGPprefs_new.xml" PGPprefs.xml 
37.
 
38.
ECHO Fertig.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Batch : alle Dateien eines Ordners bearbeiten (1)

Frage von deguonkel zum Thema Batch & Shell ...

Batch & Shell
XML in CSV bat batch powershell (9)

Frage von nolle99 zum Thema Batch & Shell ...

Batch & Shell
Batch zum bearbeiten mehrerer CSV (3)

Frage von Matzus87 zum Thema Batch & Shell ...

Batch & Shell
Script zum XML Datei Umschreiben (12)

Frage von cberndt zum Thema Batch & Shell ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Infineon TPMs unsicher!

Information von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Firewall

PfSense Repository für Version 2.3.x

(2)

Information von Dobby zum Thema Firewall ...

LAN, WAN, Wireless

WPA-2 hat erste Risse: KRACK

(5)

Information von the-buccaneer zum Thema LAN, WAN, Wireless ...

Hardware

GPD Pocket: Winziger Laptop für Wenig Tipper

(1)

Information von pelzfrucht zum Thema Hardware ...

Heiß diskutierte Inhalte
Windows Server
gelöst Gruppenrichtlinie greift nicht zu! (23)

Frage von Syosse zum Thema Windows Server ...

Hosting & Housing
Mailserver Software Empfehlungen (20)

Frage von sunics zum Thema Hosting & Housing ...

Windows 7
gelöst Windows 7 Anmeldedomäne festlegen (13)

Frage von flotaut zum Thema Windows 7 ...