Konvertieren einfache Bash-Skript zu PowerShell?
Ich zog das Bash-Skript aus hier, die prüft die AVI-Datei schlechten Rahmen mit ffmpeg und cygwin-Erweiterung. Ich bin in der Lage, um den code auszuführen, die in Mingw. Ich legte ffmpeg.exe (ren ffmpeg), cygwin1.dll & cygz.dll in Mingw-bin Verzeichnis (/c/mingw/bin/). Nun, ich bin auf der Suche nach port dieses bash-code zu PowerShell. Kann mir jemand ein paar PowerShell-Licht auf diese ein?
Skript: (Pfad: /c/mygw/bin/AviConvert)
#!/bin/bash
FFMPEG="ffmpeg"
LIST=`find | grep \.avi$`
for i in $LIST; do
OUTP="$i.txt"
OUTP_OK="$i.txt.ok"
TMP_OUTP="$i.tmp"
if [ -f "$OUTP" -o -f "$OUTP_OK" ] ; then
echo Skipping "$i"
else
echo Checking "$i"...
RESULT="bad"
ffmpeg -v 5 -i "$i" -f null - 2> "$TMP_OUTP" && \
mv "$TMP_OUTP" "$OUTP" && \
RESULT=`grep -v "\(frame\)\|\(Press\)" "$OUTP" | grep "\["`
if [ -z "$RESULT" ] ; then
mv "$OUTP" "$OUTP_OK"
fi
fi
done
- Wie weit hast du Sie bekommen, wenn Sie versucht, es sich selbst? Was genau sind Sie stecken?
- Seine Arbeit Prima. Für jede AVI-Datei in das Zielverzeichnis, erzeugt es eine report-Datei, die entweder mit *.ok (wenn die Datei keine Defekten Rahmen), *.txt (wenn es ein frame-Fehler fround) oder *.tmp (während die unter-Prozess). Aber die Verarbeitung ist extrem langsam. Ich dachte, läuft das Skript in der PowerShell kann die Leistung verbessern, wie mingw ist die Emulation bash-Umgebung (das bedeutet viel Overhead?). CMIIW!
- Ich vermute, dass die Sache unter die längste ist der Befehl
ffmpeg -v 5 -i "$i" -f null - 2> "$TMP_OUTP"
. Haben Sie versucht, mit einem build für windows avaialble hier.? Sie können vergleichen, cygwin und Powershell nur durch die Verarbeitung 1 der Ihre AVI-Dateien und vergleichen von Laufzeiten. - Andy ist vor Ort auf - läuft das unter powershell machen null Unterschied. Die wogenden heben von ffmpeg, die weder interessiert noch, hängt von der parent-shell, weil es ist ein Unabhängiger Prozess.
- Vielen Dank Andy, das macht definitiv Sinn. Ich denke, um den Prozess schneller muss ich laufen, die parallele Prozesse und wahrscheinlich versuchen, ein anderes video-Konvertierungs-engine (vielleicht ein .NET-basiert) zu bewerten, der Unterschied.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn du nicht in der Lage zu finden, die ähnliches schon gekocht in PowerShell, Ihre einzige chance ist, um zu verstehen, dieses Skript Logik und schreiben in der PowerShell von Grund auf, da gibt es große Unterschiede.
Sehen Sie den Unterschied in der syntax/Befehle und die entsprechende übersetzung. Einige Bash vs Powershell related posts/docs verfügbar im web, z.B. diese. Und natürlich finden Sie PowerShell-Erste Schritte-Handbücher. Für die Beispiel-syntax für für ist anders, für die PowerShell ist:
BTW, in deinem Fall ist es besser foreach, d.h. so etwas wie: