[BATCH] Jak zrobić taką pętlę?

Witam,

Chcę zrobić w Batchu pętlę, która będzie wykonywana tyle razy, ile użytkownik wpisał.

Próbowałem już pół godziny, ale mi to nie wychodzi…

Jak mam wpisać tutaj FOR, by działało prawidłowo?

echo Podaj ile razy program ma kopiowac oryginal.

set /p razy=

echo Nastapi wykonanie operacji...

pause

FOR %licznik%==%razy% do (

set %licznik%=%licznik%+1

copy "%oryginal% %kopie%

set %kopie_dopiska_numeru%+1

%kopie%=%kopie%+%kopie_dopiska_numeru%

)

W C++ to bym wiedział… Tam było łatwiej…

Dodane 21.09.2013 (So) 10:19

Acha… Rozszerzenie pliku jeszcze w %kopie%… Ech… To tak nie będzie działało…

Trzeba będzie osobno dodawać rozszerzenie.

  1. for ma zupełnie inną składnię, wpisz for /? i poczytaj.

  2. Zawartość ( ) wczytywana jest jako jedna całość i zmienne środowiskowe są rozwijane na początku, powinieneś użyć opóźnionego rozwijania zmiennych.

Przykład: dodawanie kolejnych liczb od 1 do podanej, z wyświetlaniem wyników pośrednich

setlocal enabledelayedexpansion


set /p ile=


set suma=0


for /l %%i in (1,1,%ile%) do (

	set /a suma=!suma!+%%i

	echo suma od 1 do %%i = !suma!

)

Opóźnione rozwijanie zmiennych zostało tu włączone przez setlocal enabledelayedexpansion, setlocal powoduje przy okazji, że zmiany zmiennych środowisjkowych są lokalne dla danego pliku .bat. Innym sposobem na włączenie opóźnionego rozwijania jest uruchomienie cmd z przełącznikiem /V:ON

Nazwa iteratora musi być jednoliterowa i poprzedzona % jeśli piszesz w konsoli lub %% jeśli piszesz w pliku wsadowym.

PS. :arrow:

Rolek0, brzydki przykład, bo to samo da się zrobić bez pętli:

set /p ile=

set suma=(!ile!+1)*!ile!/2

echo suma od 1 do !ile! = !suma!

Dać, się da, ale na czymś trzeba zaprezentować mechanizm. A po co się męczyć wymyślając jakieś wyszukane rzeczy dla głupiego przykładu? :wink:

PS. Temat dotyczył pętli :wink:

Dla tego napisałem brzydki przykład a nie sposób.