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

Aus Konfigurations Dateien eine Zeichenfolge auslesen und hinter den Dateinamen schreiben

Mitglied: tommhii

tommhii (Level 1) - Jetzt verbinden

22.07.2012, aktualisiert 19:48 Uhr, 2800 Aufrufe, 21 Kommentare

mit einer find Abfrage lese ich aus vielen XML Konfigurations Dateien eine Versionsnummer aus wenn diese vorhanden ist soll der Dateiname in eine Datei geschrieben werden, aus den Dateien die jetzt in der ergebnis.log stehen möchte ich als info für mich den Servernamen hinter den Dateinamen schreiben um zu wissen welcher server die gleiche Versionsnummer hat , alles soll dann wieder in eine Datei geschrieben werden.

Folgendes Problem beschäftigt mich , es wäre schön wenn mir jemand einen tip geben könnte.
Ich habe in einen Ordner ca 10 xml Dateien aus denen lese ich eine bestimmte zeichenfolge aus. Wenn die Datei diese Zeichenfolge (25 , 30 ,10) enthält setze ich eine 1 an den Dateinamen und schreibe den Dateinamen in eine Datei

01.
 Find /C "25 , 30 ,10" *.xml | Find "XML: 1" > ergebnis.log > >
soweit klappt das ja, aber nun möchte ich von allen Dateien die in die ergebnis.log geschrieben wurden die Zeichenfolge "Servername" auslesen und den ausgelesenen Servername an den Dateinamen anhängen.
die Ausgabe sollte dann so in etwa aussehen

7238459.xml servername
4348940.xml servername

in jeder xml Datei steht ein anderer Servername. Der Servername der aus der xml Datei ausgelesen wurde sollte auch hinter dem richtigen Dateinamen stehen. Ich möchte automatisiert aus der Datei ergebnis.log
die einzelnen Dateien ansprechen die dort stehen.
wie kann man das machen? und den Wert der Abfrage hinter den Dateinamen in der Liste (ergebnis.log) schreibt.


VG
tommhi
Mitglied: bastla
22.07.2012, aktualisiert 23.07.2012
Hallo tommhii!

Soferne der Servername in einer eigenen Zeile so
<Servername>DerServer</Servername>
in der Datei steht, sollte sich das ganze Vorhaben etwa so umsetzen lassen (ungetestet):
01.
@echo off & setlocal 
02.
set "Version=25 , 30 ,10" 
03.
set "Tag=Servername" 
04.
set "Log=ergebnis.log" 
05.
 
06.
del "%Log%" 2>nul 
07.
for /f "delims=" %%i in ('findstr /mc:"%Version%" *.xml') do ( 
08.
    for /f "tokens=2 delims=<>" %%a in ('findstr /i "%Tag%" "%%i"') do >>"%Log%" echo %%i %%a 
09.
)
Grüße
bastla

[Edit] Suche nach "Servername" [Edit2] und Apostroph [/Edit2] ergänzt [/Edit]
Bitte warten ..
Mitglied: tommhii
23.07.2012 um 07:30 Uhr
Hallo bastla,

ja die Zeile Servername steht so in der Datei. Wo fragst du aber in dem Script nach dem Servernamen, in der Datei stehen natürlich noch andere Werte drin wie Version und Servername.

VG
tommhi
Bitte warten ..
Mitglied: bastla
23.07.2012 um 08:27 Uhr
Hallo tommhii!

Sorry - hatte ich gestern nur so zwischen Tür und Angel hingeschrieben - ist jetzt aber oben dabei ...

Grüße
bastla
Bitte warten ..
Mitglied: tommhii
23.07.2012, aktualisiert um 11:09 Uhr
Hallo bastla,

ich hab es mal getestet, aber es wird keine log Datei geschrieben und es kommt auch keine Fehler Meldung.


<Servername>DerServer</Servername> 
<Version>dieVersion</Version> 
<Hersteller>derHersteller</Hersteller> 
> 
Das sind jetzt nur 3 Einträge aus so einer xml Datei, aber nicht alle. Bis zu ca. 40 Einträge befinden sich in so einer xml -Datei die durchsucht werden soll.

VG
tommhi
Bitte warten ..
Mitglied: bastla
23.07.2012 um 12:03 Uhr
Hallo tommhii!

Ich habe jetzt noch das (hoffentlich) letzte fehlende Teilchen ("'") oben ergänzt ...

Grüße
bastla
Bitte warten ..
Mitglied: tommhii
23.07.2012 um 13:00 Uhr
Hallo bastla,

immernoch keine Reaktion von dem Script ,es entsteht immernoch keine .log .

VG
tommhi
Bitte warten ..
Mitglied: bastla
23.07.2012, aktualisiert um 13:59 Uhr
Hallo tommhii!

Dann stell mal auf "echo on" und schau Dir den Ablauf an bzw, einfacher, teste mal vorweg
findstr /mc:"25 , 30 ,10" *.xml
Grüße
bastla
Bitte warten ..
Mitglied: tommhii
23.07.2012 um 15:12 Uhr
komma war bei der Version an der falschen Stelle. Die ergebnis.log wird jetzt erstellt aber hinter dem Dateinamen steht nicht der servername sondern ein anderer Wert.


84087103058740391342603454333.xml /Sig
VG
tommhi
Bitte warten ..
Mitglied: bastla
23.07.2012, aktualisiert um 15:40 Uhr
Hallo tommhii!
hinter dem Dateinamen steht nicht der servername sondern ein anderer Wert.
Das Extrahieren des Servernamens erfolgt auf Basis der geposteten Beispielzeile
<Servername>DerServer</Servername>
indem anhand der Tennzeichen "<" und ">" das zweite entstehende Token "DerServer" gebildet wird - wenn die Zeile anders aussieht (inkl zB Leerzeichen am Zeilenanfang), kann die Zerlegung nicht funktionieren.

Um die Suche nach dem Tag genauer zu formulieren, könntest Du den Suchbegriff in Zeile 3 ergänzen:
set "Tag=set "Tag=^\<Servername\>"
Damit werden dann genau jene Zeilen gefunden, an deren Anfang "<Servername>" steht.

Eine etwas robustere Version (hier muss "<Servername>" nicht am Zeilenanfang stehen) könnte dann noch so aussehen:
01.
@echo off & setlocal 
02.
set "Version=25 , 30 , 10" 
03.
set "Tag=<Servername>" 
04.
set "Log=ergebnis.log" 
05.
 
06.
set "Suche=%Tag:<=\<%" 
07.
set "Suche=%Suche:>=\>%" 
08.
del "%Log%" 2>nul 
09.
for /f "delims=" %%i in ('findstr /mc:"%Version%" *.xml') do ( 
10.
    for /f "delims=" %%a in ('findstr /i "%Suche%" "%%i"') do set "Zeile=%%a" & call :ProcessLine "%%i" 
11.
12.
goto :eof 
13.
 
14.
:ProcessLine 
15.
for /f "tokens=2 delims=<>" %%s in ("%Zeile:*%Tag%=%") do >>"%Log%" echo %~1 %%s 
16.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: tommhii
30.07.2012 um 09:40 Uhr
hallo bastla,

sorry ich kann mich erst jetzt melden war eine woche nicht da. Danke erstmal für deine Mühe.
Leider geht es auch so nicht. Mit diesen Script werden nur noch 6 xml Dateinamen in das log geschrieben vorher waren es 56 . und so sieht das ergebnis aus :
53898011342591595702.xml /Sig woher das /Sig kommt weiss ich nicht. eigentlich sollte da der Servername stehen.

VG
Tommhii
Bitte warten ..
Mitglied: bastla
30.07.2012 um 11:28 Uhr
Hallo tommhii!

Ersetze das Unterprogramm ab Zeile 14 durch
01.
:ProcessLine 
02.
call set "Zeile=%%Zeile:*%Tag%=%%" 
03.
for /f "delims=<>" %%s in ("%Zeile%") do >>"%Log%" echo %~1 %%s 
04.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: tommhii
30.07.2012, aktualisiert um 13:19 Uhr
Hallo bastla,

das mit dem Servernamen passt jetzt, aber warum findet er nur 6 Dateinamen, wo er doch mit dem vorgehenden Script 56 gefunden hat.


VG
tommhi
Bitte warten ..
Mitglied: bastla
30.07.2012, aktualisiert um 15:36 Uhr
Hallo tommhii!

Bau mal zwischen Zeile 9 und 10 ein
01.
echo "%%i" 
02.
findstr /i "Servername" "%%i" 
03.
findstr /i "\<Servername\>" "%%i" 
04.
echo ------------------------------------
und starte den Batch aus der CMD-Shell - es werden jetzt für alle Dateien, die die richtige Versionsnummer enthalten, die Zeilen mit "Servername" bzw mit "<Servername>" angezeigt - daraus solltest Du dann Rückschlüsse ziehen könen ...

Grüße
bastla
Bitte warten ..
Mitglied: tommhii
30.07.2012 um 16:37 Uhr
hallo bastla,

ich hab das eingefügt vor dem 1. goto :eof, aber in der log Datei stehen wieder nur die 6 Dateinamen . So sieht es ja gut aus aber es müssten laut der Version 56 Dateien sein.

VG
tommhi
Bitte warten ..
Mitglied: bastla
30.07.2012 um 17:07 Uhr
Hallo tommhii!
ich hab das eingefügt vor dem 1. goto :eof
Da anscheinend
zwischen Zeile 9 und 10
nicht verständlich genug war: Füge die genannten Zeilen vor der Zeile mit der einzelnen Klammer, die vor dem ersten "goto :eof" steht, ein ...

Grüße
bastla
Bitte warten ..
Mitglied: tommhii
31.07.2012, aktualisiert um 07:58 Uhr
Hallo bastla,

ich habe es so eingefügt aber das Ergebnis bleibt das gleiche.
01.
 @echo off & setlocal 
02.
set "Version=25, 30, 10" 
03.
set "Tag=<Servername>" 
04.
set "Log=ergebnis.log" 
05.
set "Suche=%Tag:<=\<%" 
06.
set "Suche=%Suche:>=\>%" 
07.
del "%Log%" 2>nul 
08.
for /f "delims=" %%i in ('findstr /mc:"%Version%" *.xml') do ( 
09.
    for /f "delims=" %%a in ('findstr /i "%Suche%" "%%i"') do set "Zeile=%%a" & call  
10.
:ProcessLine "%%i" 
11.
echo "%%i" 
12.
findstr /i "Servername" "%%i" 
13.
findstr /i "\<Servername\>" "%%i" 
14.
echo ------------------------------------ 
15.
16.
goto :eof 
17.
:ProcessLine 
18.
call set "Zeile=%%Zeile:*%Tag%=%%" 
19.
for /f "delims=<>" %%s in ("%Zeile%") do >>"%Log%" echo %~1 %%s 
20.
goto :eof
VG
tommhi
Bitte warten ..
Mitglied: bastla
31.07.2012 um 11:12 Uhr
Hallo tommhii!
aber das Ergebnis bleibt das gleiche.
Falls Du damit den Inhalt der "ergebnis.log" meinst, kann das ja auch nicht anders sein - es wird ja nur ausgegeben, was mit den jeweiligen Suchvarianten gefunden wird, damit Du anhand dieser Ausgabe Rückschlüsse ziehen kannst; wie schon erwähnt liefert die Zeile 12 alle Zeilen, in denen "Servername" enthalten ist, und die Zeile 13 (stärker einschränkend) nur Zeilen, in denen "<Servername>" steht ...

Falls Du nicht, wie empfohlen, direkt aus der CMD-Shell testest, füge noch unmittelbar vor Zeile 16
pause
ein, damit Du die Ausgabe lesen kannst - mehr kann ich Dir, ohne Deine Dateien zu kennen, nicht anbieten ...

Grüße
bastla
Bitte warten ..
Mitglied: tommhii
31.07.2012 um 12:01 Uhr
Hallo bastla,

in dem Ordner wo sämtliche xml Dateien stehen habe ich eine Suche mit diesem Script gemacht dann bekomm ich 56 Einträge in die Ergebnis.log
01.
@echo off & setlocal 
02.
> set "Version=25 , 30 ,10" 
03.
> set "Tag=Servername" 
04.
> set "Log=ergebnis.log" 
05.
>  
06.
> del "%Log%" 2>nul 
07.
> for /f "delims=" %%i in ('findstr /mc:"%Version%" *.xml') do ( 
08.
>     for /f "tokens=2 delims=<>" %%a in ('findstr /i "%Tag%" "%%i"') do 
09.
> >>"%Log%" echo %%i %%a 
10.
> ) 
11.
> 

Nehme ich das letzte Script dann erhalte ich nur 6 Einträge in der Ergebnis.log. Im ersten Script hat er nur den Servernamen nicht angehangen an den Dateinamen. Also kann es doch nicht an der Suchvariante liegen.

Die Suche nach der Version ist doch in jedem Script gleich.

VG
tommhi
Bitte warten ..
Mitglied: bastla
31.07.2012 um 12:16 Uhr
Hallo tommhii!
Die Suche nach der Version ist doch in jedem Script gleich.
Wenn Du meinst ...

Dann passe einfach dieses Script an und gut ist.

Grüße
bastla
Bitte warten ..
Mitglied: tommhii
31.07.2012 um 13:34 Uhr
Hallo bastla!

ich hab mal eine pause zwischen zeile 11 und 12 also nach dem
01.
 echo "%%i"

eingefügt und da lese ich folgendes :
Die Datei "er>♣? " kann nicht gefunden werden
"4567399923636373.xml"
Drücken Sie eine beliebige Taste...

liegt das vielleicht an dem 3. Set.
er hört immer nach den ersten 13 Dateien auf und schreibt die ersten 6 gefundenen Dateinamen in die ergebnis.log. warum hört er na 13 Dateien auf, obwohl da noch einige mehr stehen.

VG
Tommhi
Bitte warten ..
Mitglied: bastla
31.07.2012 um 14:53 Uhr
Hallo tommhii!
warum hört er na 13 Dateien auf, obwohl da noch einige mehr stehen.
Wie schon gesagt: Da ich Deine Dateien nicht kenne, kann ich Dir diese Frage auch nicht beantworten - die Besonderheiten der Datei 14 musst Du selbst herausfinden ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Windows 10

Zeichenfolge in .reg Datei schreiben (Registry)

gelöst Frage von MedicalAdWindows 104 Kommentare

Guten Morgen, ich habe folgendes Problem, ich muss in einen bestimmten Pfad eine Zeichenfolge schreiben. Nur bekomme ich es ...

Batch & Shell

Dateinamen mit vbs auslesen und in eine TXT Datei schreiben

gelöst Frage von KeiosIDBatch & Shell5 Kommentare

Hallo, ich hoffe mal, das ist das richtige Unterforum. Nach diversen suchen und Hilfe aus einem Windows Scripting Buch ...

Batch & Shell

Vergleich einer Zeichenfolge in zwei Dateinamen

Frage von hongziehongBatch & Shell3 Kommentare

Hallo zusammen, ich möchte den Inhalt (ich weiß nicht, ob Variable das richtige Wort dafür wäre) zweier Dateinamen jeweils ...

Entwicklung

Dateiname auf bestimme Zeichenfolge überprüfen?

gelöst Frage von matzettoEntwicklung8 Kommentare

Hallo Experten, leider komme ich bei einer bestimmten Problematik in meinem aktuellen Projekt nicht weiter und wollte daher hier ...

Neue Wissensbeiträge
Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 16 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 22 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 1 TagSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Heiß diskutierte Inhalte
Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server25 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless22 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

SAN, NAS, DAS
Qnap TS-453S Pro - Anbindung Active Directory
Frage von JuckieSAN, NAS, DAS13 Kommentare

Hallo zusammen, ich habe hier eine Qnap TS-453S Pro die sich mal so absolut gar nicht in das Active ...