Top-Themen

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, 12607 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
Anfangstext bei einer xml Datei bearbeiten durch Batch Datei
gelöst Frage von GrauerStarBatch & Shell5 Kommentare

Hallo :D Ist das möglich so wie ich mir das vorstelle?: Eine Batch Datei die in einem Ordner automatisch ...

Batch & Shell
Batch : alle Dateien eines Ordners bearbeiten
gelöst Frage von deguonkelBatch & Shell1 Kommentar

Hallo, ich habe folgendes Problem, ich habe ein fertiges Batch-Programm, bei dem man einen Dateipfad angibt, und diese Datei ...

Batch & Shell
Batch XML Importer - Import von Dateien mittels Batch und xml-File
gelöst Frage von DeeJayBeeBatch & Shell7 Kommentare

Hallo zusammen, ich habe gerade folgendes Problem: Ein Scanner scannt Dokumente in ein Verzeichnis C:\scans\auftraege Er benennt jedes Dokument ...

Batch & Shell
Batch-Problem Inhalt aus Datei auslesen, bearbeiten und dann wieder speichern
gelöst Frage von AllForOne94Batch & Shell9 Kommentare

Hallo Com, Ich habe eigentlich ein relativ simples Problem. Meine Ausgangsdatei ist so aufgebaut: 0,00h 1,00h 2,18h 3,00h 4,00h ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 4 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 8 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 8 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 11 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...