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

Frage Entwicklung Batch & Shell

GELÖST

XML-Inhalt zur Ordner- und Dateiumbenennung nutzen

Mitglied: tardezyx

tardezyx (Level 1) - Jetzt verbinden

18.06.2014, aktualisiert 20.06.2014, 1078 Aufrufe, 3 Kommentare

Hallo,

in zahlreichen Unterordnern befindet sich jeweils genau eine XML-Datei derselben Grammatik, von denen ich <title> und <year> gerne zum Umbenennen des Unterordners und aller dort vorhandenen Dateien nutzen möchte (Dateiendungen sind immer unique - es ist also kein Problem, sie gleich zu benennen). Derzeit mache ich das mühsam manuell.

Beispiel Ordnerstruktur:

01.
Suchverzeichnis 
02.
- Subdir 1 
03.
--- Subfile 1.* (Datendatei, Dateityp unbekannt/unwichtig) 
04.
--- Subfile 1.nfo (die XML) 
05.
- Subdir 2 
06.
--- Subfile 2.* (Datendatei, Dateityp unbekannt/unwichtig) 
07.
--- Subfile 2.nfo (die XML) 
08.
- usw. usf.
Subfile 1.nfo enthält nun folgende Informationen:

01.
<?xml version="1.0" encoding="utf-8"?> 
02.
<entry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
03.
  <id>tt1276962</id> 
04.
  <title>Projekt ASDF</title> 
05.
... 
06.
  <year>2005</year> 
07.
... 
08.
</entry>
Es soll daraufhin "Subdir 1" wie folgt umbenannt werden:

01.
Suchverzeichnis 
02.
- Projekt ASDF (2005) 
03.
--- Projekt ASDF (2005).* (Datendatei, Dateityp unbekannt/unwichtig) 
04.
--- Projekt ASDF (2005).nfo (die XML) 
05.
- Subdir 2 
06.
--- Subfile 2.* (Datendatei, Dateityp unbekannt/unwichtig) 
07.
--- Subfile 2.nfo (die XML) 
08.
- usw. usf.
Es sollen also <title> und <year> zu einem String verknüpft und dabei <year> umklammert werden. Hinzu kommt aber eine Besonderheit durch die Ordner- & Dateinamensbeschränkung des Betriebssystems, bei der bestimmte Zeichen nicht erlaubt sind. Diese Zeichen kommen freilich nur im <title> vor und müssten im String wie folgt ersetzt werden:

- "<" mit "("
- ">" mit ")"
- "/" mit "-"
- "|" mit "-"
- "\" mit "-"
- ":" mit " -" (inkl. Leerzeichen vor dem "-")
- "*" mit "" (also weg)
- "?" mit "" (also weg)

Ferner können (bei einer späteren Nachpflege) in den Unterordnern die folgenden drei Dateien mit bestimmten Endungen vorkommen, dies wären:

Projekt ASDF (2005)-poster.*
Projekt ASDF (2005)-fanart.*
Projekt ASDF (2005)-trailer.*

Diese Endungen (-poster, -fanart, -trailer) müssten bei der Umbenennung erhalten bleiben.

Danke und Gruß!
Mitglied: colinardo
LÖSUNG 19.06.2014, aktualisiert 20.06.2014
Moin tardezyx,
wenn Powershell nichts ausmacht, könnte das so aussehen:
01.
# Suchverzeichnis 
02.
$rootFolder = "D:\Projekte" 
03.
$nfofiles = dir "$rootFolder\*.nfo" -Recurse | ?{!$_.PSIscontainer} 
04.
foreach($nfo in $nfofiles){ 
05.
    # Infos aus XML-Datei holen 
06.
    $xml = New-Object XML 
07.
    $xml.Load($nfo.FullName) 
08.
    $title = $xml.SelectSingleNode("/entry/title").InnerText 
09.
    $year = $xml.SelectSingleNode("/entry/year").InnerText 
10.
     
11.
    # Replacements 
12.
    $title = $title.Replace("<","(").Replace(">",")").Replace(":"," -").Replace("*","").Replace("?","") 
13.
    $title = ([Regex]'[/|\\]').Replace($title,"-") 
14.
     
15.
    # Dateien umbenennen 
16.
    $files = dir "$($nfo.Directory)\*.*" 
17.
    foreach($file in $files){ 
18.
        if(($file.BaseName -match '-poster$|-fanart$|-trailer$')){ 
19.
            $split = $file.BaseName.Split("-") 
20.
            $specialEnd = $split[$($split.Length -1)] 
21.
            $newname = "$title ($year)-$specialEnd$($file.Extension)" 
22.
        }else{ 
23.
            $newname = "$title ($year)$($file.Extension)" 
24.
25.
        rename-item $file.FullName -NewName $newname 
26.
27.
 
28.
    # Ordner umbenennen 
29.
    rename-item $nfo.Directory "$title ($year)" 
30.
}
Grüße Uwe
Bitte warten ..
Mitglied: Endoro
19.06.2014 um 13:59 Uhr
Hey,
das ist mit reinem Batch auch zu machen.
Es ist aber reichlich aufwendig, das zu damit schreiben und zu testen.
Nimm die Lösung von @colinardo.
Gruss, Endoro
Bitte warten ..
Mitglied: tardezyx
20.06.2014 um 20:22 Uhr
Hi Uwe,

danke - funktioniert hervorragend.

Gruß!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
XML-Inhalt austauschen
gelöst Frage von noscriptBatch & Shell9 Kommentare

Hallo zusammen Nachdem ich nun das komplette Internet gefühlt zwei Mal gelesen, aber nicht kapiert habe, versuch ichs nun ...

Batch & Shell
Inhalt von XML-Dateien ändern
gelöst Frage von Kedi123Batch & Shell14 Kommentare

Hallo zusammen, wir haben täglich viele XML-Dateien, die unter anderem jeweils eine Festplattengröße in Byte enthalten (Zeile 16). Um ...

VB for Applications
Inhalt einer XML Datei Script ändern
gelöst Frage von chris27584VB for Applications4 Kommentare

Hallo zusammen, in folgendem Script <?xml version="1.0"?> -<SkClientConfig xmlns:xsi=" xmlns:xsd=" <LastServerIndex>1</LastServerIndex> <LastUser>11111</LastUser> <LastWorkplace>2358</LastWorkplace> -<SerializableFont> <FontValue>Microsoft Sans Serif; 8,25pt</FontValue> </SerializableFont> ...

Batch & Shell
Variablen Nutzen welche aus dem Inhalt von Variablen erstellt werden
gelöst Frage von der-blobBatch & Shell4 Kommentare

Hallo Zusammen, der Titel ist zwar nicht direkt aussage kräftig, aber jedoch weis ich nicht wie ich es beschreiben ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 3 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 3 TagenSicherheit12 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall10 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS9 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen9 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...

Windows Netzwerk
Zugriff auf den Desktop Ordner eines anderen Rechners in der gleichen Domäne
gelöst Frage von JensNomaWindows Netzwerk6 Kommentare

Guten Abend, ich war neulich mit unserem Admin am Tisch gesessen. Er an seinem Notebook angemeldet mit dem Domänen-Admin, ...