czy wiesz, czy istnieje prosty sposób na uruchomienie polecenia FOR w pliku wsadowym w wielu wątkach? Jaki jest sens posiadania 4 rdzeni, jeśli nie mogę uruchomić moich zadań w 4 równoległych wątkach?
Na przykład, jeśli optymalizuję PNG za pomocą PNGOUT, poleceniem, którego użyłbym, jest
for %i in (*.png) do pngout "%i"
Ale jest to wysoce paraliżowalne zadanie, w którym pod-zadania w ogóle nie zależą od siebie.
Aby uruchomić to w 4 „kolejkach”, napisałbym coś takiego
for -thread 4 %i in (*.png) do pngout "%i"
Czy muszę napisać własną aplikację, która byłaby w stanie to zrobić, czy jest dostępne bezpłatne rozwiązanie?
batch
automation
Axarydax
źródło
źródło
Odpowiedzi:
Napisałem plik wsadowy, który jakiś czas temu wykonuje tylko maksymalną liczbę poleceń na przepełnieniu stosu: Równoległe wykonywanie procesów powłoki :
źródło
find /c /v ""
.Pliki wsadowe są przeznaczone do bardzo podstawowych skryptów i nie obsługują żadnego rodzaju wielowątkowości. Będziesz musiał napisać własne narzędzie do robienia tego, co chcesz osiągnąć.
Alternatywnie, Windows PowerShell może zapewnić więcej możliwości, aby zbliżyć się do celu.
Jeśli chcesz po prostu uruchomić wiele operacji jednocześnie, możesz użyć polecenia start, aby uruchomić narzędzie PNGOUT w nowym oknie. Pętla FOR będzie kontynuowana bez oczekiwania na zakończenie każdej operacji.
Zmodyfikowana linia wyglądałaby następująco:
Należy jednak pamiętać, że spowoduje to skuteczne uruchomienie PNGOUT dla WSZYSTKICH plików w katalogu w tym samym czasie, co najprawdopodobniej nie jest pożądane.
źródło