Muszę wykonać polecenie 100-200 razy i jak dotąd moje badania wskazują, że musiałbym albo skopiować / wkleić 100 kopii tego polecenia, LUB użyć for
pętli, ale for
pętla oczekuje listy elementów, dlatego potrzebowałbym 200 plików do działania lub lista 200 elementów, pokonując punkt.
Wolałbym nie pisać programu w języku C i musiałem dokumentować, dlaczego musiałem napisać inny program, aby uruchomić mój program do celów testowych. Modyfikacja mojego programu również nie wchodzi w grę.
Tak więc, biorąc pod uwagę polecenie, a
jak miałbym to wykonać N
za pomocą skryptu wsadowego?
Uwaga: nie chcę nieskończonej pętli
Na przykład oto, jak wyglądałoby to w JavaScript:
var i;
for (i = 0; i < 100; i++) {
console.log( i );
}
Jak by to wyglądało w skrypcie wsadowym działającym w systemie Windows?
windows
loops
batch-file
Tom J Nowell
źródło
źródło
Odpowiedzi:
for /l
jest twoim przyjacielem:Zaczyna się od 1, krok po kroku, a kończy na 100.
Użyj dwóch
%
s, jeśli jest w pliku wsadowym(co jest jedną z rzeczy, których tak naprawdę nienawidzę w skryptach systemu Windows)
Jeśli masz wiele poleceń dla każdej iteracji pętli, wykonaj następujące czynności:
lub w pliku wsadowym
Klucz:
/l
oznacza, żefor
polecenie będzie działać w sposób numeryczny, a nie na zestawie plików%x
jest zmienna pętli(wartość początkowa, przyrost wartości, warunek końcowy [włącznie])
źródło
%x
jest zmienną pętli,/l
(nie\l
) oznacza, że polecenie for będzie działać w sposób numeryczny, a nie na zestawie plików.for /l %x in (1, 1, 100) do echo %x
otrzymuję „x nie oczekiwany”.I w celu iteracji po plikach katalogu:
Musisz użyć „enableDelayedExpansion” i! FILENAME! zamiast $ FILENAME $. W drugim przypadku DOS zinterpretuje zmienną tylko raz (przed wejściem do pętli), a nie za każdym razem, gdy program zapętli się.
źródło
Szablon prostej, ale zliczonej pętli:
Przykład: powiedz „Hello World!” 5 razy:
Ten przykład wyświetli:
źródło
set /p loopcount="How many loops? "
, abyś mógł uruchomić go z danymi wejściowymi użytkownika. To jest bardziej praktyczne.Możesz również wypróbować to zamiast
for
pętli:Jest dość mały i tego używam cały czas.
źródło
Możesz też zmniejszać / zwiększać zmienną liczbę razy, kiedy chcesz zapętlić:
Oczywiście, używanie
FOR /L
to autostrada i jest to zaułek, który zajmuje więcej czasu, ale dociera do tego samego celu.źródło
Możesz zrobić coś z następującym efektem, unikając pętli FOR.
źródło
Możesz to zrobić bez
for
instrukcji ^. ^:Ma podstawowe zrozumienie. Po prostu sprawdź to. : P
źródło
Bardzo podstawowy sposób implementacji zapętlania w programowaniu cmd przy użyciu etykiet
źródło
DOS nie oferuje do tego bardzo eleganckich mechanizmów, ale myślę, że nadal możesz kodować pętlę dla 100 lub 200 iteracji przy rozsądnym wysiłku. Chociaż nie ma
for
pętli numerycznej , możesz użyć ciągu znaków jako „zmiennej pętli”.Zakoduj pętlę za pomocą GOTO i dla każdej iteracji
SET X=%X%@
dodaj kolejny@
znak do zmiennej środowiskowej X; i aby wyjść z pętli, porównaj wartość X z ciągiem 100 (lub 200)@
znaków.Nigdy nie mówiłem, że to eleganckie, ale powinno działać!
źródło
/a
Opcja zSET
poleceniem oceni wyrażenie numeryczną wartość prawej bocznej. Zobacz doucmentation dla SET . Nie trzeba wykonywać sztuczki konkatenacji.set /a
w DOS. Na szczęście pytanie dotyczycmd
... (w momencie tej odpowiedzi tytuł pytania brzmiał: „Pętla skryptów wsadowych DOS”Nie jestem pewien, czy taka odpowiedź została już przesłana, ale możesz spróbować czegoś takiego:
Zmienna% var% będzie rosła o jeden, aż osiągnie wartość 100, po czym program wyświetli zakończenie wykonywania. Ponownie, nie jestem pewien, czy to zostało przesłane, czy coś podobnego, ale myślę, że może być najbardziej kompaktowy.
źródło
Używam tego. Jest to prawie to samo, co inne, ale jest to tylko inny sposób na napisanie tego.
źródło
Odpowiedź naprawdę zależy od tego, jak dobrze znasz wsad, jeśli nie masz takiego doświadczenia, zaleciłbym zwiększenie zmiennej pętli:
Ale jeśli masz większe doświadczenie z partią, polecam, że bardziej praktyczny
for /l %loop in (1, 1, 10) do echo %loop
jest lepszy wybór.źródło
Oto skrypt szablonu, którego użyję.
Po uruchomieniu wyłącza echo, a następnie uruchamia „Loop”, ale w tym miejscu przechodzi do „Loop” (mam nadzieję, że to pomaga).
źródło
całkowicie bezbłędna pętla
możesz go edytować, zmieniając 10 w wierszu 5 na dowolną liczbę, aby wskazać, ile razy chcesz zapętlić.
źródło
(ZMIENIONO) Zrobiłem to, więc zatrzymuje się po 100 razy
To wygeneruje 4 losowe liczby co 1 sekundę 100 razy. Wyjmij „limit czasu 1 / nobreak> nul”, aby przyspieszyć.
źródło
Prawdopodobnie użyj goto jak
To robi pętlę inf (nieskończoną).
źródło
infinite
jest nieco większy niż żądany100-200 times
, więc to nie odpowiada na pytanie.Mam 2 odpowiedzi Metody 1: Wstaw JavaScript do partii
(Nie wiem dużo o JavaScript)
Metoda 2: Pętla w partii
(Dzięki FluorescentGreen5)
źródło