Wissen Sie, ob es eine einfache Möglichkeit gibt, den FOR- Befehl in einer Batchdatei auf mehreren Threads auszuführen ? Was bringt es, 4 Kerne zu haben, wenn ich meine Aufgaben nicht in 4 parallelen Threads ausführen kann?
Wenn ich beispielsweise PNGs mit PNGOUT optimiere, würde ich den Befehl verwenden
for %i in (*.png) do pngout "%i"
Dies ist jedoch eine sehr paralellierbare Aufgabe, bei der die Unteraufgaben überhaupt nicht voneinander abhängen.
Um dies in 4 'Warteschlangen' auszuführen, würde ich so etwas schreiben
for -thread 4 %i in (*.png) do pngout "%i"
Muss ich meine eigene For-Like-App schreiben, die dies kann, oder gibt es eine kostenlose Lösung?
batch
automation
Axarydax
quelle
quelle
Antworten:
Ich habe vor einiger Zeit eine Batch-Datei geschrieben, die nur eine maximale Anzahl von Befehlen für den Stapelüberlauf ausführt: Parallele Ausführung von Shell-Prozessen :
quelle
find /c /v ""
.Batch-Dateien sind für extrem einfaches Scripting gedacht und unterstützen keinerlei Multithreading. Sie müssten Ihr eigenes Dienstprogramm schreiben, um das zu tun, was Sie erreichen möchten.
Alternativ bietet Windows PowerShell möglicherweise mehr Funktionen, um Ihrem Ziel näher zu kommen.
Wenn Sie einfach mehrere Vorgänge gleichzeitig ausführen möchten, können Sie mit dem Befehl start das Dienstprogramm PNGOUT in einem neuen Fenster starten. Die FOR-Schleife wird dann fortgesetzt, ohne auf den Abschluss jeder Operation zu warten.
Die modifizierte Zeile würde folgendermaßen aussehen:
Beachten Sie jedoch, dass dadurch PNGOUT für ALLE Dateien im Verzeichnis gleichzeitig effektiv gestartet wird, was höchstwahrscheinlich nicht wünschenswert ist.
quelle