Es soll eine Textdatei erstellt werden, die zur Dokumentation von Video-Dateien verwendet wird. Die Video-Dateien sind nach Themengebieten auf mehrere Verzeichnisse aufgeteilt.

Es muss kein Video-Verzeichnis sein – wie in diesem Beispiel, es kann ein beliebiges Verzeichnis von Dateien sein, welches man für Dokumentationszwecke in eine Datei speichern möchte. Wenn es andere Inhalte wären, zum Beispiel Bücher oder Audio-Dateien, muss man Kleinigkeiten im Programm anpassen.

Aber es geht um Videos. In diesem Beispiel sind es die Unterverzeichnisse

bitcoin
computer
cyber
digitalisierung
internet
krypto
programmieren
spiel

In jedem Unterverzeichnis sind Video-Dateien, die zur Bezeichnung des Verzeichnisses passen. Das zu erstellende PowerShell-Programm soll eine formatierte Liste der Film-Titel erstellen.

Clear-Host löscht den Bildschirm. $input_path zeigt auf der Video-Verzeichnis. $output_file ist der Name der zu erzeugenden Textdatei. In $Text wird der auszugebende Text gesammelt. In $TotalSize wird die Größe des Verzeichnisses berechnet, indem die Größe der einzelnen Dateien aufsummiert wird. $MARGIN_LEFT ist die Breite des linken Rands, $DIRECTORY_LENGTH ist die Breite, die für den Namen des Verzeichnisses reserviert wird.

$d enthält alle Unterverzeichnisse. $Name ist der vollständige Pfad eines Verzeichnisses, $Count enthält die Anzahl der Videos (=.mp4-Dateien ), $Show ist die Überschrift eines Verzeichnisses und enthält auch die Anzahl der Videos.

$f sind alle Video-Dateien. Für jede Video-Datei wird die Gesamtgröße in $TotalSize summiert, $content ist eine Zeile mit einem Video. Aus dieser Zeile wird eine 10-stellige nummerische Id, die mit einem Bindestrich beginnt der Übersichtlichkeit halber entfernt.

Die Funktion FormatSize() erzeugt eine leichter lesbare Datengröße.

Code

#Inhaltsverzeichnis eines Video-Archivs
#
Clear-Host
$input_path = ‘S:\odrive\drive.ccc.at-admin (WebDAV)\clubintern\Videos\’
$output_file = ‘s:\desktop\video-content.txt’
$Text = ""
$TotalSize = 0
$MARGIN_LEFT = 6
$DIRECTORY_LENGTH = 16
$d = Get-ChildItem -Directory -Path $input_path
foreach ($dir in $d) {
    $Name = $input_path + $dir.Name
    $Count = (Get-ChildItem $Name -Filter "*.mp4").Count
    $Show = ($Count.ToString()).PadLeft($MARGIN_LEFT,' ') + " " + $dir.Name 
    $Text += $Show + "`r`n"
    $f = Get-ChildItem -File -Filter "*.mp4" -Path ($input_path+$dir.Name)
    foreach ($file in $f) {
        $TotalSize += $file.length
        $content = " ".PadLeft($MARGIN_LEFT,' ') + " " + $dir.Name.PadRight($DIRECTORY_LENGTH,' ') + $file.Name.Replace(".mp4","")
        $regex = [regex] '\-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
        $Text += $regex.Replace($content,"") + "`r`n"
    }
}
function FormatSize([long]$Size) {
    $Size_KB = 1024
    $Size_MB = $Size_KB*$Size_KB
    $Size_GB = $Size_MB*$Size_KB
    $Size_TB = $Size_GB*$Size_KB
    $TB = [math]::floor([decimal]($Size/$Size_TB))
    $Size = $Size - $TB*$Size_TB
    $GB = [math]::floor([decimal]($Size/$Size_GB)) 
    $Size = $Size - $GB*$Size_GB
    $MB = [math]::floor([decimal]($Size/$Size_MB))
    $Size = $Size - $MB*$Size_MB
    $KB = [math]::floor([decimal]($Size/$Size_KB))
    $Size = $Size - $KB*$Size_KB
    $strFinal = ""
    if ($TB -gt 0) { 
        $strFinal += "$TB TB "
    }
    if ($GB -gt 0) { 
        $strFinal += "$GB GB "
    }
    if ($MB -gt 0) { 
        $strFinal += "$MB MB "
    }
    if ($KB -gt 0) { 
        $strFinal += "$KB kB "
    }
    if ($Size -gt 0) { 
        $strFinal += "$Size B "
    }
    return $strFinal 
}
$Header = "Video-Verzeichnis`r`n"
$Header += "=================`r`n"
$Header += "Größe: $TotalSize`r`n"
$Header += FormatSize($TotalSize) 
$Header += "`r`n`r`n"
$Text = $Header + $Text
$Text > $output_file

Ausgabe (Fragment)

Video-Verzeichnis
=================
Größe: 125162704088
116 GB 580 MB 467 kB 216 B 

30 bitcoin
   bitcoin         Börse vor acht-Die Bitcoin-Blase
   bitcoin         extra 3-Ach- und Krachgeschichten_ Bitcoin
   bitcoin         extra 3-Bitcoin - Spekulationsobjekt und Statussymbol
   bitcoin         Gut zu wissen-Nationalpark _ Borkenkäfer _ Bitcoins
   bitcoin         Gut zu wissen-Was macht Bitcoin so fälschungssicher_
   bitcoin         heute 19 Uhr-Bitcoin-Debüt an der Börse
...

Franz Fiala

Präsident Clubcomputer / Herausgeber PCNEWS bei ClubComputer.at
Franz ist pensionierter HTL Lehrer (TGM), Präsident von ClubComputer, Herausgeber der Clubzeitung PCNEWS und betreut unser Clubtelefon und Internet Support. Er ist leidenschaftlicher Rapid Wien Fan.

Letzte Artikel von Franz Fiala (Alle anzeigen)