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…
for ma zupełnie inną składnię, wpisz for /? i poczytaj.
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.