:top
echo Zestaw poleceń.
pause
set /P c=Czy wykonać zestaw poleceń? [T/N]
if /I “%c%” EQU “T”
echo wykonaj polecenie 1
echo wykonaj kolejne polecenie
echo wykonaj następnie jeszcze inne polecenie
goto :dalej
if /I “%c%” EQU “N” goto :dalej
:dalej
echo Drugi zestaw poleceń
pause
set /P c=Czy wykonać drugi zestaw poleceń? [T/N]
if /I “%c%” EQU “T”
echo wykonaj polecenie 2
echo wykonaj jakieś inne polecenie
echo wykonaj ostatnie polecenie
if /I “%c%” EQU “N” goto :exit
echo
:exit
echo Gotowe. Koniec skryptu.
echo.
pause
Jest to skrypt roboczy jak widać. Chodzi o to, że warunek IF pyta się czy wykonać jakieś polecenia (uruchomić programy), jeśli tak, to niech je poprostu wykona, a jeśli nie, to niech idzie dalej do kolejnego zestawu poleceń. Nie działa mi to jednak prawidłowo. Czy ktoś pomoże?
Nie mam pojęcia czy o to Ci chodzi bo tak wytłumaczyłeś, że tylko dzwonić do wróżbity Macieja albo zgadywać. Ja nie mam kasy na wróżbitę Macieja, moja szklana kula się rozładowała więc zgaduję.
Instrukcje które mają zostać wykonane w ramach bloku instrukcji wyrażenia if musisz objąć w blok instrukcji czyli ( ) w przeciwnym razie jeśli warunek zostanie spełniony to wykonana zostanie tylko jedna operacja która po nim wystąpi (albo i nie bo nie wiem jak to jest dokładnie w batchu, piszę jak jest w 99% językach). Więc jak chcesz aby po spełnieniu warunku wykonała się operacja1 operacja2 i operacj3 to musisz to zapisać mniej więcej tak:
if /I “%c%” EQU “T” (
operacja1
operacja2
operacja3
)
Jeśli dopuszczasz, że w ramach jednego uruchomienia możesz wykonać więcej niż jeden warunek to nie ma potrzeby używania else jak proponuje @bachus. Nie ma też potrzeby bawić się w goto.
@Fizyda
Chodziło mi o to, że skrypt pyta się czy wykonać określone operacje w bloku “top”. Jeśli potwierdzić to klawiszem T to niech je wykonuje po kolei a następnie przechodzi do bloku “dalej” i ta sama procedura. Sory jeśli źle to opisałem, ale wielkie dzięki bo dokładnie o to mi chodziło Jak widać diabeł tkwi w szczegółach, zabrakło nawiasów.