Do liczenia pętli od 1 do n w skrypcie nietoperza systemu Windows


25

Muszę uruchomić polecenie systemu Windows n razy w pliku skryptu nietoperza. Wiem, jak to zrobić w różnych językach programowania, ale nie potrafię tego zrobić w wierszu poleceń systemu Windows :-(

Spodziewałbym się czegoś takiego

for(int i = 0; i < 100; i++) {
   // do something
}

a nawet to (choć nie do końca poważnie)

1.upto(100, {
   // do something
}) 

Dzięki!

EDYTOWAĆ

Mogę napisać program w Javie, Perlu, C lub cokolwiek, co wygeneruje skrypt nietoperza, który wygląda tak

for %%N in (1 2 3 4 5 6 7 8 9 10 11 12) do echo %%N

i tak dalej. Lub nawet „lepiej”:

echo 1
echo 2
echo 3
echo 4
echo 5
echo 6
echo 7
echo 8
echo 9
echo 10
echo 11
echo 12

a następnie go wykonać ... Chodzi o to, że potrzebuję zwięzłego sposobu na określenie zakresu liczb do iteracji w skrypcie.

Dzięki!


1
Odpowiedzi tutaj są całkowicie dobre, ale na miłość boską ... partia? Naprawdę? Gorąco polecam przejście na bardziej nowoczesny język.
EBGreen

Nie brzmi, jakby miał wybór w tej sprawie.
wolfgangsz

Nie widziałem niczego, co sugerowałoby, że nie ma wyboru. W rzeczywistości mówi, że umie pisać w „jakimkolwiek” języku, więc powiedziałbym, że bez dalszych informacji brzmi to tak, jakby miał wybór.
EBGreen,

Chłopaki, muszę wdrożyć kod, który jest napisany nowoczesnym językiem przez skrypt ...
raoulsson

1
Może to jest lub nie jest wymagane - czasami jest to właściwe narzędzie do pracy. Nie możesz zagwarantować, że PowerShell, a co dopiero bash, python, perl itp. Zostaną zainstalowane na serwerze Windows XP lub 2003. Partia jest całkowicie akceptowalnym rozwiązaniem.
Goyuix

Odpowiedzi:


44

Możesz to zrobić podobnie:

ECHO Start of Loop

FOR /L %i IN (1,1,5) DO (
  ECHO %i
)

1,1,5 jest dekodowany jako:

(start,step,end)

Pamiętaj również, że jeśli osadzasz to w pliku wsadowym, będziesz musiał użyć podwójnego znaku procentu (%%), aby poprzedzić zmienne, w przeciwnym razie interpreter poleceń spróbuje oszacować zmienną% i przed uruchomieniem pętli.


3
„Początek pętli ECHO” będzie wykonywany na każdym kroku, a nie tylko na początku.
Wstrzymano do odwołania.

1
Również użycie @znaku powstrzyma drukowanie poleceń wykonywanych z wiersza poleceń. „... DO @ (...”
Wstrzymano do odwołania.

Działa to tylko z / L po „FOR”. Dlaczego tak jest
raoulsson

1
Czy dla /? a znajdziesz: FOR / L% zmienna IN (początek, krok, koniec) DO polecenie [parametry-polecenia] Zestaw jest sekwencją liczb od początku do końca, według ilości kroków. Tak więc (1,1,5) wygeneruje sekwencję 1 2 3 4 5, a (5, -1,1) wygeneruje sekwencję (5 4 3 2 1)
EBGreen

Lepiej jest użyć %%iw tekście i dodać komentarz, który służy %ido bezpośredniego wykonania w wierszu polecenia. Większość użytkowników przetestuje to w pliku BAT i spróbuje znaleźć przyczynę błędu (tak jak ja).
i486


6

Bezpośrednio z wiersza poleceń:

for /L %n in (1,1,100) do @echo %n

Za pomocą pliku wsadowego:

@echo off
for /L %%n in (1,1,100) do echo %%n

Wyświetla:

1
2
3
...
100

co jeśli sekwencja liczb to 0001 do 00100+ itd.?
nwgat
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.