Powershell-Skript zum Öffnen von Zufallsvideos

1628
Per DeDor

Ich suchte nach einer Möglichkeit, eine zufällige Videodatei in meinem Ordner zu öffnen, der etwa 400 Videos (20 Videos in 20 Unterordnern) enthält.

Ich habe ein Powershell-Skript gefunden und es funktioniert, aber jedes Mal, wenn ich es ausführe, brauche ich etwa 12 Sekunden, um eine Datei zu öffnen. Können Sie sich einen Weg vorstellen, um es schneller zu machen?

Mein random.ps1-Skriptcontect sieht folgendermaßen aus:

$formats = @("*.avi","*.mkv") $dir = Split-Path $MyInvocation.MyCommand.Path gci "$dir\*" -include $formats -recurse | Get-Random -Count 1 | Invoke-Item 

Danke für deine Hilfe

0
Ist es schneller, wenn Sie Ihren Video-Player Ihrer Wahl bereits geöffnet haben? Wenn Sie `| entfernen Invoke-Item`, wird es in der Nähe sofort abgeschlossen? Jeeva vor 9 Jahren 1
Wenn ich bereits einen Videoplayer geöffnet habe, verbessert dies die Wartezeit und das Entfernen von | nicht Invoke-Item, das Video wird nicht abgespielt, es schreibt lediglich den Videonamen in die Konsole. Per DeDor vor 9 Jahren 0
In der Tat würde es nicht. Aber das Schreiben ist fast augenblicklich? Jeeva vor 9 Jahren 0
Nein, das Schreiben ist immer noch verspätet Per DeDor vor 9 Jahren 0
Anscheinend ist die Verzögerung auf der Suche, obwohl mein System anscheinend erfreulich schnell ist. Ich schätze, Sie schauen entweder auf ein langsames Laufwerk oder auf etwas, auf das Sie über ein anderes System über das Netzwerk zugreifen. Die Antwort unten, die das Caching beinhaltet, ist nahe genug an dem, was ich als nächstes vorschlagen würde. Jeeva vor 9 Jahren 0

1 Antwort auf die Frage

0
dangph

Es ist langsam, weil das Skript alle Namen aller Videos finden muss, bevor es zufällig ausgewählt werden kann. Die Suche nach all diesen Dateien braucht Zeit. Ich kann mir keine einfache Möglichkeit vorstellen, um das zu umgehen.

Sie können jedoch ein paar Skripte erstellen. Die erste erstellt eine Liste der Videodateien und fügt sie in eine Datei ("videos.txt") ein:

$formats = @("*.avi","*.mkv") $dir = Split-Path $MyInvocation.MyCommand.Path gci "$dir\*" -include $formats -recurse | Set-Content .\videos.txt 

Und das zweite Skript wählt eine Datei aus videos.txt aus und spielt sie ab:

Get-Content .\videos.txt | Get-Random -Count 1 | Invoke-Item 

Das erste Skript ist langsam, aber das zweite ist schnell. Sie können vielleicht das erste Skript aus dem Windows Task Scheduler aufrufen, damit videos.txt auf dem neuesten Stand bleibt.

Das war wirklich hilfreich! Die Verzögerung ist jetzt etwa fünfmal besser. Per DeDor vor 9 Jahren 0