Abend alle,
Ich lerne langsam Powershell so nackt mit mir!
ive hat diesen Code generiert, um ein Programm (MetaX) auszuführen, wenn eine Dateierweiterung in einem Ordner vorhanden ist. Wenn jedoch x Dateierweiterungen gefunden werden, wurde x Mal versucht, das Programm auszuführen.
$Files3 = "C:\Users\BRACEGIRDLE\Favorites\Desktop\MASTER_FOLDER\3_FINISHED"
$MetaX = "C:\Program Files (x86)\MetaX"
$MetaXTVShows = "C:\Users\BRACEGIRDLE\Favorites\Desktop\MASTER_FOLDER\2_TEMPORARY\TV_SHOWS"
$MetaXExtensions = @(".mp4")
Set-Location $MetaXTVShows
Get-ChildItem | Where-Object {
If ($MetaXExtensions -contains $_.Extension)
{& $MetaX\metax.exe /T /A $MetaXTVShows /AT $Files3 /C}
Else {}
}
Ich glaube, es hat etwas mit der if else-Funktion zu tun, aber ich könnte mich irren.
Gibt es eine andere Alternative als das Programm 5-mal auszuführen, da sich 5 Erweiterungen in dem Ordner befinden, in dem gesucht wird? Funktioniert dies nicht gut mit der Software?
sehr geschätzt
Connor Bracegirdle
powershell
Connor Bracegirdle
quelle
quelle
$MetaX\metax.exe
gegen alle.mp4
Dateien laufen , die in gefunden werden$MetaXTVShows
? Ich nehme an, das ist es, was Sie meinen, dass Sie 5 Dateien.mp4
in diesem Ordner haben, also müssen Sie für jede dieser Dateien den Prozess gegen diese ausführen?Antworten:
Das Objekt gibt mehr als eine Datei mit dieser Erweiterung zurück. Anschließend führen Sie das Programm jedes Mal aus, wenn diese Erweiterung angezeigt wird. Prüfen Sie einfach, ob die Erweiterung existiert, dh wahr oder falsch. Führen Sie basierend auf diesem Ergebnis Ihr Programm aus.
quelle
Es ist gelungen, es teilweise zum Laufen zu bringen. Danke Keltan für den Rat.
Funktioniert in gewisser Hinsicht gut, aber es sieht nicht nach * .mp4 im Ordner und es wird immer noch das Programm ausgeführt, wenn nichts drin ist
wäre wahr gewesen?
quelle
$_.Extension
ist nur innerhalb einer{ }
Pipe gültig (ForEach-Object / Where-Object)IIUR möchten Sie metax.exe ausführen, wenn sich mindestens eine .mp4-Datei im Pfad befindet:
quelle
$MetaXExtensions
es in dieser Antwort nicht vorhanden ist, aber das OP hat, da@(".mp4")
es in einen String konvertiert werden muss, dh$MetaXExtensions = [string]$MetaXExtensions
bevor es in dieser Antwort richtig funktioniert, oder einfach anstelle des Array-Objekts oder was auch immer verwendet-Filter "*.mp3"
oder gesetzt wird$MetaXExtensions = "*.mp3"
. Davon abgesehen scheint dies das Problem für das OP vollständig zu lösen, also gute Idee mit dem Zählvergleich im if-Block.Endlich habe ich es verstanden. Zuerst habe ich mich für wahr oder falsch entschieden und dann die Test-Path-Funktion aufgerufen, ein wenig herumgespielt und es geschafft, dass es für diese Instanz funktioniert. Ich denke, wenn ich nach etwas Komplexerem suchen würde, dann würde dies nicht funktionieren, was ich bei einem anderen Problem gefunden habe.
Vielen Dank für Ihre Hilfe, ich genieße es, Powershell zu lernen
quelle