Videos mit kleiner Auflösung löschen
Guten Morgen zusammen,
ich habe ein Verzeichnis mit mehreren tausend Videodateien.
Hier möchte ich eine Bereinigung vornehmen, nämlich Videodateien löschen welche eine Bildbreite kleiner als 720 haben.
Ich habe schon mehrere Skripte gesehen, aber keines gefunden welche wo die Extension funktioniert bzw. wo es geschafft hat diesen Wunsch umzusetzen.
Könnt ihr mir helfen?
Vielen Dank im Voraus!
Grüße Robert
ich habe ein Verzeichnis mit mehreren tausend Videodateien.
Hier möchte ich eine Bereinigung vornehmen, nämlich Videodateien löschen welche eine Bildbreite kleiner als 720 haben.
Ich habe schon mehrere Skripte gesehen, aber keines gefunden welche wo die Extension funktioniert bzw. wo es geschafft hat diesen Wunsch umzusetzen.
Könnt ihr mir helfen?
Vielen Dank im Voraus!
Grüße Robert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7965769895
Url: https://administrator.de/forum/videos-mit-kleiner-aufloesung-loeschen-7965769895.html
Ausgedruckt am: 22.12.2024 um 06:12 Uhr
12 Kommentare
Neuester Kommentar
Hi.
[Erweiterte Dateieigenschaften mit Powershell-Funktion abfragen]
Hier mal ein Ansatz, damit dein Hirn nicht verstaubt:
Beispiel 2: Nur bestimmte Eigenschaften von Dateien ausgeben
Kudos gehen an Kollege @colinardo für diesen Code.
Damit hast Du mal einen Anhaltspunkt, auf dem Du wunderschön aufbauen kannst.
Gruß
[Erweiterte Dateieigenschaften mit Powershell-Funktion abfragen]
Hier mal ein Ansatz, damit dein Hirn nicht verstaubt:
Beispiel 2: Nur bestimmte Eigenschaften von Dateien ausgeben
Get-ChildItem "C:\Ordner" | Add-ExtendedFileProperties -PropertyExtended "Bildhöhe","Bildbreite" | select FullName,Bildhöhe,Bildbreite
Kudos gehen an Kollege @colinardo für diesen Code.
Damit hast Du mal einen Anhaltspunkt, auf dem Du wunderschön aufbauen kannst.
Gruß
Zitat von @SAABTAM1:
Add-ExtendedFileProperties : Die Benennung "Add-ExtendedFileProperties" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist...
Was mache ich falsch?
Add-ExtendedFileProperties : Die Benennung "Add-ExtendedFileProperties" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist...
Was mache ich falsch?
Nur mal ins Blaue: Du hast die Funktion die im genannten Beitrag vorgegeben ist aber schon in dein Script eingebaut?
Manuel
Was mache ich falsch?
Hast Du dir denn mal den verlinkten Thread angeschaut?Natürlich musst Du die Funktion(die colinardo geschrieben hat in seinem Thread) erst einbauen, damit dein System die Funktion überhaupt aufrufen kann.
Ist doch eine schöne Methode um sich in Powershell einzuarbeiten bzw. einzulernen. PS wirst Du als Admin häufig nutzen (wollen). Erleichtert das IT-Leben enorm.
Add-ExtendedFileProperties : Die Benennung
Bitte Codetags nutzen für die Übersichtlichkeit, Danke Dir. Gruß
Moin.
Klappt aber nur mit Formaten die der Explorer auch als Videos erkennt. Wenn es sich also um Videos mit Dateiformaten handelt deren Auflösung der Explorer nicht auslesen kann musst du zu Drittanbieter-Tools wie z.B. mediainfo greifen.
Das ganze kannst du auch grafisch im Explorer erreichen indem du die erweiterte Filter-Syntax im Suchfeld des Explorers eintippst:
Das zeigt dir im Ordner/Unterordner alle Videos mit einer Breite kleiner 720 Pixel
Referenz dazu hier: Advanced Query Syntax
Gruß siddius
$shell = New-Object -com Shell.Application
Get-ChildItem "D:\Videos" -File -Filter *.mp4 -Recurse | ?{$shell.NameSpace($_.DirectoryName).ParseName($_.Name).ExtendedProperty("{64440491-4C8B-11D1-8B70-080036B11A03} 3") -lt 720} | remove-item -Force -Verbose
Das ganze kannst du auch grafisch im Explorer erreichen indem du die erweiterte Filter-Syntax im Suchfeld des Explorers eintippst:
Bildbreite: < 720
Referenz dazu hier: Advanced Query Syntax
Gruß siddius
## Videos mit einer Dateigröße kleiner als 5 MB werden gelöscht
Überflüssig , das bietet GetChildItem schon von Haus aus an, und kannst du alles in einem so kombinieren ohne die Files immer wieder durchlaufen zu müssen.$shell = New-Object -com Shell.Application
Get-ChildItem "A:\Videos" -File -Filter *.mp4 -Recurse | ?{$shell.NameSpace($_.DirectoryName).ParseName($_.Name).ExtendedProperty("{64440491-4C8B-11D1-8B70-080036B11A03} 3") -lt 640 -or $shell.NameSpace($_.DirectoryName).ParseName($_.Name).ExtendedProperty("{64440491-4C8B-11D1-8B70-080036B11A03} 4") -lt 480 -or $_.Length -lt 5MB} | remove-item -Force -Verbose
Kennt einer noch einen Befehl um Videos mit einer Spieldauer von xx Minuten zu ermitteln?
Für das Löschen von Videos kleiner einer bestimmten Dauer:[Windows.Storage.FileProperties.VideoProperties,Windows.Storage.FileProperties,ContentType=WindowsRuntime] | out-null
$asTaskGeneric = ([System.WindowsRuntimeSystemExtensions].GetMethods() | ? { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -eq 'IAsyncOperation`1' })[0]
Function Await($WinRtTask, $ResultType) {
$asTask = $asTaskGeneric.MakeGenericMethod($ResultType)
$netTask = $asTask.Invoke($null, @($WinRtTask))
$netTask.Wait(-1) | Out-Null
$netTask.Result
}
Get-ChildItem 'A:\Videos' -File -Filter *.mp4 | ?{
$file = Await ([Windows.Storage.StorageFile]::GetFileFromPathAsync($_.Fullname)) ([Windows.Storage.StorageFile])
(Await $file.Properties.GetVideoPropertiesAsync() ([Windows.Storage.FileProperties.VideoProperties])).Duration -lt [timespan]'00:01:00'
} | remove-item -Force -Verbose
Variablen-Tippfehler, ist behoben.