Filmliste mit Namen und relativen Pfad als .txt erstellen mit Powershell
Hallo ich mache gerade ein Praktikum und habe noch nicht viel mit Powershell gearbeitet.
Ich habe mich schon ein wenig reingelesen und einige kleinere Spielereien damit gemacht.
Mein Problem ist wie folgt ich soll eine Filmliste von einem bestimmten Pfad aus dem Netzwerk in eine .txt Datei erstellen.
In dieser Liste soll der Name des Films und der relative Pfad angezeigt werden, dazu kommt das in diesem Pfad noch ein weiterer Ordner ist der ebenfalls Filme enthält und diese auch in die Liste eingetragen werden müssen.
Könntet ihr mir vielleicht ein paar Hilfe Stellungen geben? Oder sogar noch Literatur empfehlen wo ich sowas nachlesen könnte?
Ich habe mich schon ein wenig reingelesen und einige kleinere Spielereien damit gemacht.
Mein Problem ist wie folgt ich soll eine Filmliste von einem bestimmten Pfad aus dem Netzwerk in eine .txt Datei erstellen.
In dieser Liste soll der Name des Films und der relative Pfad angezeigt werden, dazu kommt das in diesem Pfad noch ein weiterer Ordner ist der ebenfalls Filme enthält und diese auch in die Liste eingetragen werden müssen.
Könntet ihr mir vielleicht ein paar Hilfe Stellungen geben? Oder sogar noch Literatur empfehlen wo ich sowas nachlesen könnte?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 222582
Url: https://administrator.de/forum/filmliste-mit-namen-und-relativen-pfad-als-txt-erstellen-mit-powershell-222582.html
Ausgedruckt am: 08.04.2025 um 17:04 Uhr
9 Kommentare
Neuester Kommentar
Hallo Scoorpyn, Willkommen im Forum!
kein Problem, wenn die Ausgabe der Pfade relativ zum Startordner ausgegeben werden sollen kannst du dies so machen. Es werden alle Dateien in allen Unterordnern rekursiv verarbeitet.
(Zeile 1 = Startordner / Zeile 2 = Pfad zur Ausgabedatei)
möchtest du die Liste lieber als *.csv-Datei haben kannst du das
ersetzen.
Gute Fundstellen zum lernen von Powershell sind z.B. diese
Grüße Uwe
kein Problem, wenn die Ausgabe der Pfade relativ zum Startordner ausgegeben werden sollen kannst du dies so machen. Es werden alle Dateien in allen Unterordnern rekursiv verarbeitet.
(Zeile 1 = Startordner / Zeile 2 = Pfad zur Ausgabedatei)
$startDir = "\\Server\freigabe"
$filmliste = "C:\filmliste.txt"
Get-ChildItem $startDir -Recurse -File | select Name,@{Name="Relativer Pfad";e={$_.DirectoryName.Replace($startDir,"")}} | out-file $filmliste -Encoding UTF8
out-file ....
am Ende durchexport-csv $filmliste -Delimiter ";" -NoTypeInformation -Encoding UTF8
Gute Fundstellen zum lernen von Powershell sind z.B. diese
- http://www.powershellpraxis.de/
- http://powershell.com/cs/
- Einstieg in Scripting
- PowerShell for Runaways - Part I
- PowerShell For Runaways - Part II
Grüße Uwe
klar ...kannst du auch nehmen, s.o.
Zitat von @Scoorpyn:
Eine letzte Frage noch, wenn ich nun die Liste erweitern will und zwar mit der Bildhöhe und der Bildbreite der Filme wie
könnte ich es dann schreiben?
Das geht ...Eine letzte Frage noch, wenn ich nun die Liste erweitern will und zwar mit der Bildhöhe und der Bildbreite der Filme wie
könnte ich es dann schreiben?
function Add-ExtendedFileProperties{
<#
.SYNOPSIS
Fügt erweiterte Eigenschaften von Dateien an das Objekt in der Pipline hinzu
.DESCRIPTION
Extrahiert erweiterte Eigenschaften von Dateien wie z.B. Exif-Daten, Musik- bzw. Filmdetails
.EXAMPLE
Get-ChildItem "C:\Temp" | Add-ExtendedFileProperties -PropertyExtended "Bildhöhe","Bildbreite","Bitrate" | ft Name,Bildhöhe,Bildbreite,Bitrate
Fügt alle nur die Eigenschaften "Bildhöhe","Bildbreite","Bitrate" als zusätzliche Spalten dem Objekt in der Pipline hinzu
.EXAMPLE
Get-ChildItem "C:\Temp" | Add-ExtendedFileProperties | fl *
Fügt alle verfügbaren erweiterten Eigenschaften dem Objekt in der Pipline hinzu
.PARAMETER PropertyExtended
Mit diesem Parameter geben sie eine Komma-Separierte Liste von Eigenschaften an welche sie erhalten möchten.
-PropertyExtended "Bildhöhe","Bildbreite","Bitrate"
#>
param(
[Parameter(Mandatory=$true,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)]
$fileItem,
[String[]] $PropertyExtended = "ALL"
)
begin
{
$shellObject = New-Object -Com Shell.Application
$itemProperties = $null
}
process
{
if($fileItem.PsIsContainer)
{
$fileItem
return
}
$directoryName = $fileItem.DirectoryName
$filename = $fileItem.Name
$folderObject = $shellObject.NameSpace($directoryName)
$item = $folderObject.ParseName($filename)
if(-not $itemProperties)
{
$itemProperties = @{}
$counter = 0
$columnName = ""
if ($PropertyExtended -eq "ALL"){
#get all properties
do {
$columnName = $folderObject.GetDetailsOf($folderObject.Items, $counter)
if($columnName) { $itemProperties[$counter] = $columnName }
$counter++
}while($columnName)
}else{
#get user defined properties
do {
$columnName = $folderObject.GetDetailsOf($folderObject.Items, $counter)
foreach($name in $PropertyExtended){
if ($columnName.toLower() -eq $name.toLower()){
$itemProperties[$counter] = $columnName
}
}
$counter++
}while($columnName)
}
}
foreach($itemProperty in $itemProperties.Keys)
{
$fileItem | Add-Member NoteProperty $itemProperties[$itemProperty] `
$folderObject.GetDetailsOf($item, $itemProperty) -ErrorAction `
SilentlyContinue
}
$fileItem
}
}
$startDir = "\\Server\Freigabe"
$filmliste = "C:\filmliste.txt"
Get-ChildItem $startDir -Recurse | ?{$_.PSIsContainer -eq $false} | Add-ExtendedFileProperties -PropertyExtended "Bildhöhe","Bildbreite" | select Name,@{Name="Relativer Pfad";e={$relDir = $_.DirectoryName.Replace($startDir,""); if ($relDir -ne ""){echo ".$relDir"}}},Bildhöhe,Bildbreite | out-file $filmliste -Encoding UTF8
Achja irgendwie scheine ich da einen Fehler noch zu haben mein Powershell erkennt den Befehl -file nicht.
dann hast du noch eine ältere Version von Powershell. Siehe dazu das o. Script als Workaround.Außerdem wie könnte ich bei der Ausgabe noch einen . vor den \ der relativen Pfade ausgeben ohne dann auch einen . bei den Dateien zu haben wo ich keinen relativen Pfad habe?
siehe Script obenGrüße Uwe
Zitat von @Scoorpyn:
Ok eine letzte Frage habe ich da noch kann ich diese Liste dann auch im Powershell Filmdateien mit der Endung .mov verwenden
Wenn du auf dem Tab "Details" der Dateieigenschaften bei den MOV-Dateien die Breite und Höhe sehen kannst wird es auch mit diesen Video-Dateien gehen. Ansonsten wirst du auf MediaInfo zurückgreifen müssen.Ok eine letzte Frage habe ich da noch kann ich diese Liste dann auch im Powershell Filmdateien mit der Endung .mov verwenden
Grüße Uwe
p.s. wenn's das dann war, Beitrag bitte noch als gelöst markieren. Merci.