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

Mit einer .bat eine XML Datei auslesen und umbenennen

Frage Entwicklung Batch & Shell

Mitglied: dudofski

dudofski (Level 1) - Jetzt verbinden

08.01.2013, aktualisiert 22:17 Uhr, 2512 Aufrufe, 3 Kommentare

Hallo liebe 'Administratoren'!
Ich brauche hilfe, da ich mich mit diesen Batch Dateien nicht gut auskenne. Ich bin für jede Hilfe extrem dankbar.

Ich hoffe, jemand kann mir ein Beispiel zeigen, wie man einfach ein XML mit einer Batch Datei umbenennen kann.

Die XML Datei hat das Format 123456.xml und liegt in einem Archivverzeichnis mit weiteren Dateien. Es handelt sich um ein Backup von einer Datenbank - alle Textdaten zum entsprechenden Titel sind im jeweiligen XML zu finden.

Da diese Nummer alleine nicht aussagekräftig ist, möchte ich den entsprechenden Tag im XML auslesen und an die Nummer hängen, also: 123456_buchtitel.xml

Und das ist schon alles.

Der Titel ist im Feld <title> gespeichert.
Als Erweiterung müsste allenfalls ein weiteres Feld an den Filenamen gehängt werden, also sowas wie:
123456_buchtitel_version.xml
Die Version ist auch hier im Feld <version> vorhanden.

Vielen Dank schon im Voraus für Eure Hilfe und Unterstützung.

dude

Mitglied: bastla
08.01.2013 um 22:55 Uhr
Hallo dudofski und willkommen im Forum!

Da Du kein Beispiel (zumindest der relevanten Zeilen) einer XML-Datei gepostet hast (falls Du das nachholen möchtest, verwende bitte "Code"-Formatierung dafür), nehme ich als unverbesserlicher Optimist an, dass jedes Feld in einer eigenen Zeile steht - dann könnte das etwa so gehen:
01.
@echo off & setlocal 
02.
set "Ordner=D:\XML-Archiv" 
03.
 
04.
pushd "%Ordner%" 
05.
for /f "delims=" %%i in ('dir /b/a-d *.xml') do call :ProcessFile "%%i" 
06.
popd 
07.
pause 
08.
goto :eof 
09.
 
10.
:ProcessFile 
11.
for /f "tokens=2 delims=<>" %%t in ('findstr "<title>" %1') do set "Titel=%%t" 
12.
for /f "tokens=2 delims=<>" %%v in ('findstr "<version>" %1') do set "Version=%%v" 
13.
echo ren %1 "%~n1_%Titel%_%Version%%~x1" 
14.
goto :eof
Wegen des "echo" in Zeile 13 wird (zum Testen) das Umbenennen der Dateien nur durch Ausgabe des jeweiligen Befehles simuliert. Falls die Tags "<title>" und "<version>" nicht am Zeilenanfang stehen sondern eingerückt sind, wäre in den Zeilen 11 und 12 jeweils "tokens=3" zu verwenden.

Grüße
bastla
Bitte warten ..
Mitglied: dudofski
09.01.2013 um 23:34 Uhr
Hallo Bastla,

poah - das ging ja fix. Vielen Dank, das ist ja grossartig. Ich werde das morgen früh gleich mal testen.

Ich habe Dir hier noch den Beginn einer entsprechenden XML Datei herauskopiert, damit Du siehst, wie sie aufgebaut ist - für alle Fälle

01.
<?xml version="1.0" encoding="utf-8"?> 
02.
<video> 
03.
  <directory group="system">12909</directory> 
04.
  <guid group="system">BDC174FA-2F73-4C99-BDBB-FD76B8137238</guid> 
05.
  <original_file group="system">LE_CAPITAL.mp4</original_file> 
06.
  <metadata group="core" name="product_content"> 
07.
    <title>Le Capital TRAILER (F)</title> 
08.
    <title_original>Le Capital</title_original> 
09.
    <episode></episode> 
10.
    <episode_title></episode_title> 
11.
    <episode_number></episode_number> 
12.
    <season_number></season_number> 
13.
    <countries_of_origin> 
14.
      <country>FRA</country> 
15.
    </countries_of_origin>
usw. Die XML Datei ist nahezu endlos... Ich hoffe, das genügt. Falls Du noch mehr Details zum Verifizieren brauchst, dann lass es mich wissen.
Konkret geht es um die Felder TITLE und EPISODE_NUMBER - Das Ausgabeformat in diesem Fall soll sein: 12909_Le Capital TRAILER (F).xml

Besten Dank und
liebe Grüsse
dude
Bitte warten ..
Mitglied: bastla
09.01.2013, aktualisiert um 23:57 Uhr
Hallo dudofski!

Auf Basis Deines Musters sollte die folgende Version des Unterprogramms ":ProcessFile" besser passen:
01.
:ProcessFile 
02.
set "Titel=" & set "Episode=" 
03.
for /f "tokens=3 delims=<>" %%t in ('findstr /i "<title>" %1^|findstr /iv "<title></title>"') do set "Titel=%%t" 
04.
for /f "tokens=3 delims=<>" %%e in ('findstr /i "<episode_number>" %1^|findstr /iv "<episode_number></episode_number>"') do set "Episode=%%e" 
05.
set "NameNeu=%~n1" 
06.
if defined Titel set "NameNeu=%NameNeu%_%Titel%" 
07.
if defined Episode set "NameNeu=%NameNeu%_%Episode%" 
08.
echo ren %1 "%NameNeu%%~x1" 
09.
goto :eof
Es wird jetzt vorausgesetzt, dass die Tags "<title>" bzw "<episode_number>" nicht am Zeilenanfang stehen, aber das erste/einzige Feld der jeweiligen Zeile kennzeichnen. Sollte eine der Informationen (vermutlich eher die "episode_number", wie auch im Beispiel) fehlen, wird sie (und das Trennzeichen "_") nicht in den neuen Namen einbezogen.

Wenn das Testergebnis vernünftig aussieht, einfach nur das "echo" vor dem "ren" entfernen und so den Batch "scharf" schalten ...

Grüße
bastla

P.S.: Ging's nicht eigentlich um Bücher?
Bitte warten ..
Ähnliche Inhalte
VB for Applications
XML Datei auslesen mit Excel
Frage von kaiuwe28VB for Applications10 Kommentare

Hallo zusammen, ich mal wieder Leider komme ich nicht weiter. Ich möchte aus einem Ordner mit mehreren XML Dateien ...

PHP
Externe XML-Datei in PHP auslesen
gelöst Frage von AkroshPHP18 Kommentare

Hallo, ich habe eine Frage zu XML und PHP. Ich habe eine externe XML-Datei die ich per PHP auslesen ...

XML
Vbs - simple XML Datei auslesen
gelöst Frage von DeeJayBeeXML4 Kommentare

Hallo zusammen, ich glaub, ich hab grad ne kleine Blockade oder denke viel zu kompliziert. Gegeben ist eine xml-Datei ...

PHP
Mehrere XML Dateien mit PHP auslesen
gelöst Frage von Jens1985PHP4 Kommentare

Hi ich würde gerne mit PHP mehrere xml Dateien auslesen. Mit nur einer xml datei klappt es wunderbar. Momentan ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 4 StundenBatch & Shell6 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 6 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 22 StundenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 22 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Server-Hardware
Braucht ein Server eine Grafikkarte?
gelöst Frage von lcer00Server-Hardware14 Kommentare

Hallo zusammen, habe gerade 3 Stunden gebraucht, um herauszubekommen, dass die Remotemanagement-Console von Intel (RMM4) nur funktioniert, wenn die ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...