Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

XML-Inhalt zur Ordner- und Dateiumbenennung nutzen

Frage Entwicklung Batch & Shell

Mitglied: tardezyx

tardezyx (Level 1) - Jetzt verbinden

18.06.2014, aktualisiert 20.06.2014, 1036 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 ..
Neuester Wissensbeitrag
Microsoft Office

MS Office Excel - Formel wird angezeigt, aber nicht berechneter Wert!

Tipp von holli.zimmi zum Thema Microsoft Office ...

Ähnliche Inhalte
Windows 7
Ordner mit Vorhängeschloss im WinExplorer (4)

Frage von wiedhalm zum Thema Windows 7 ...

Exchange Server
gelöst Outlook in Domäne ohne eigenes Konto nutzen? (3)

Frage von keine-ahnung zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Hyper-V
gelöst Reiner Hyper- V Server oder lieber Rolle (21)

Frage von Winuser zum Thema Hyper-V ...

SAN, NAS, DAS
gelöst Synology Version 6.1 Probleme (18)

Frage von Hendrik2586 zum Thema SAN, NAS, DAS ...

Router & Routing
gelöst Firtzbox VPN nicht alle Ports erreichbar? (15)

Frage von atarjono zum Thema Router & Routing ...

Router & Routing
gelöst IP Kamera für drei unabhängige Netzwerke (15)

Frage von ProfessorZ zum Thema Router & Routing ...