Proste menu wyboru w Batchu

Dla wszystkich, którzy jeszcze nie przesiedli się z Wiersza Poleceń na Powershell (a śmiem stwierdzić że 100% zamiana CMD na PS pewnie nigdy nie dojdzie do skutku) mam kolejna prostą, acz przydatną sztuczkę. Jeżeli mamy w swoim zestawie garść plików wsadowych, lub uruchamiamy często te same sekwencje poleceń, być może warto ułatwić sobie nieco prace i zbudować Plik Wsadowy, który nas zapyta o to, co checmy wykonać, wykona to i zapyta ponownie. Ot menu wyboru które, zbliży nas o krok do pracy w GUI 🙂

Oto treść przykładowego pliku bat z menu wielokrotnego wyboru:

@echo off
:poczatek
cls
echo ———————————————–
echo Wybierz z listy
echo ———————————————–
echo.
echo 1) Kasowanie starych profili
echo 2) Kasowanie plikow tymczasowych
echo 3) Defragmentacja
echo 4) KONIEC
echo.
set /p opcja=wybierz:
if %opcja%==1 goto opcja1
if %opcja%==2 goto opcja2
if %opcja%==3 goto opcja3
if %opcja%==4 exit
goto zly_wybor
:opcja1
cls
echo wybrano Kasowanie starych profili
pause
goto poczatek
:opcja2
cls
echo wybrano Kasowanie plikow tymczasowych
pause
goto poczatek
:opcja3
cls
echo wybrano Defragmentacje
pause
goto poczatek
:zly_wybor
echo OPCJA NIE ZNANA.. WYBIERZ PONOWNIE!
pause
goto poczatek

Mam w zwyczaju zapętlać swoje niektóre skrypty, aby wyjście z nich było na moje własne życzenie. Odpowiada za to fragment „if %opcja%==4 exit”.
Lubię też uodpornić skrypt na pomyłki lub próby kombinowania, dlatego, gdy ktoś wybierze opcje spoza listy, skrypt poprosi o poprawny wybór.

Postaram się za jakiś czas podzielić podobnym rozwiązaniem w PowerShellu, zatem zapraszam do odwiedzania naszego bloga jak najczęściej 🙂

Łukasz Skalikow

Obecnie Manager IT. Przez lata byłem Inżynierem systemów. Jestem entuzjastą i specem od vSphere, Windows serwer, GPO. Od zawsze byłem zwolennikiem wiersza poleceń i automatyzacji. Obecnie, ze względu na pracę, rodzinę i wyjazdy służbowe, dużo mniej udzielam się na blogu, ale mam nadzieję, że pośród kilkuset porad opublikowanych na spece.it, wiele osób znajdzie dla siebie coś przydatnego :)

Przeczytaj także...

15 komentarzy

  1. porram napisał(a):

    Używam choice i jest spoko.

  2. JimiPL napisał(a):

    Kiedy tworzę plik wsadowy z menu, to na XP czy Win7 działa poprawnie, ale już na WIn98 nie :/
    Co może być tego przyczyną ? Jest to dla mnie ważne, gdyż muszę zrobić takie menu pod Win98…

    • Dariusz Góra napisał(a):

      Możesz spróbować zewnętrznych programów do generowania menu. Używałem kiedyś WBAT w jakimś przedpotopowym projekcie i całkiem dobrze się spisywał. Pozwala na zrobienie bardziej zaawansowanych opcji i obsługuje mysz. Dostępny jest tu: http://www.horstmuc.de/ui.htm

    • JimiPL napisał(a):

      Użyłem komendy choice i teraz działa poprawnie 🙂
      Program fajny i przyjemny. Dziękuję 🙂

  3. MURZYN napisał(a):

    kiedy tworze plik,włączam go i wyłącza mi się on po ułamku sekundy! co robić?

  4. Piotr Berent napisał(a):

    Spróbuj wywołać liska tak:

    start „C:Program FilesMozilla Firefoxfirefox.exe”

    • Mirek napisał(a):

      Niestety nie działa, pojawiło się okno cmd – tytuł okna to właśnie ścieżka którą podałeś a w treści okna pojawiła się zwykła linijka tak jakbym wywołał cmd normlanie

    • Piotr Berent napisał(a):

      No to tak:

      start „” „C:Program FilesMozilla Firefoxfirefox.exe”

    • Mirek napisał(a):

      Nic z tego, zauważyłem ponadto, że Firefox jest w start „” „C:Pliki programów (x86)Mozilla Firefoxfirefox.exe”
      Pojawia się komunikat: System Windows nie może odnaleźć pliku „C:Pkiki program^w (x86)Mozilla Firefoxfirefox.exe. Upewnij się, że nazwa jest poprawna i spróbuj ponownie.
      Kurcze, przecież jest raczej poprawna… ;(

    • Piotr Berent napisał(a):

      Jest dla Ciebie, nie dla cmd 😉

      ostatnia próba:

      start „” „%ProgramFiles(x86)%Mozilla Firefoxfirefox.exe”

    • Mirek napisał(a):

      Mistrz! Dzięki, teraz kombinuje jak uruchomić kilka programów, np. thunderbird wpisałem: start „” „%ProgramFiles(x86)%Mozilla Firefoxfirefox.exe”;”” „%ProgramFiles(x86)%Mozilla Thunderbirdthunderbird.exe” ale póki co nie działa…

    • Mirek napisał(a):

      na raz oczywiście bez polecenia wyboru…

    • Piotr Berent napisał(a):

      :opcja1
      cls
      start „” „%ProgramFiles(x86)%Mozilla Firefoxfirefox.exe”
      start „” „%ProgramFiles(x86)%Mozilla Thunderbirdthunderbird.exe”
      pause

    • Mirek napisał(a):

      Normalnie MASTER z Ciebie…:))) dzięki 🙂 zabieram się za robienie plików wsadowych do plików i programów które często otwieram i już nie będę musiał grzebać w oknach. Dzięki

Dodaj komentarz