Spisu treści:

Pliki wsadowe: niektóre podstawy ..: 8 kroków
Pliki wsadowe: niektóre podstawy ..: 8 kroków

Wideo: Pliki wsadowe: niektóre podstawy ..: 8 kroków

Wideo: Pliki wsadowe: niektóre podstawy ..: 8 kroków
Wideo: Podstawy programowania w Batchu/Pliki wsadowe (.bat) 2024, Wrzesień
Anonim
Pliki wsadowe: niektóre podstawy…
Pliki wsadowe: niektóre podstawy…

Ten Instruktaż nauczy Cię podstaw pisania plików wsadowych i pokaże, jak stworzyć grę w zgadywanie liczb z kilkoma zwrotami akcji, aby wszystko było interesujące…

Nauczyłem się większości moich umiejętności związanych z wierszami poleceń i całego mojego pisania wsadowego z Internetu w ogóle, a w szczególności z Instuctables. Chciałbym podziękować użytkownikowi Instructables Neodudeman za jego wspaniałe instrukcje dotyczące pisania wsadowego. Dziękuję!

Krok 1: Co to jest plik wsadowy?

Co to jest plik wsadowy?
Co to jest plik wsadowy?

Cóż, większość moich czytelników prawdopodobnie już wie, czym jest plik wsadowy, ale na wszelki wypadek….

Plik wsadowy to po prostu zbiór (partia) poleceń MSDOS, które są wykonywane sekwencyjnie po uruchomieniu pliku wsadowego. Pliki wsadowe zaczynają się jako pliki.txt w Notatniku i stają się plikami wykonywalnymi, gdy zapiszesz je jako coś z rozszerzeniem.bat. Zasadniczo wszystko, co robisz, to napisanie pliku w Notatniku, a następnie zapisanie go jako, powiedzmy, „instructable.bat”. Gdy plik.bat zostanie umieszczony na końcu nazwy pliku, pojawi się ładny, nowy plik, nazwany tak, jak go nazwałeś, z ładną ikoną przypominającą sprzęt. Dobra, teraz, gdy wiemy, co to są te pliki wsadowe, przejdźmy do pisania!

Krok 2: Podstawowe polecenia

Podstawowe polecenia
Podstawowe polecenia
Podstawowe polecenia
Podstawowe polecenia
Podstawowe polecenia
Podstawowe polecenia
Podstawowe polecenia
Podstawowe polecenia

W porządku, będziesz musiał nauczyć się kilku poleceń. Więc najpierw otwórz wiersz poleceń MSDOS. Otwórz okno startowe, kliknij uruchom, wpisz „cmd.exe”, a następnie kliknij uruchom. Najpierw przyjrzymy się zmiennym. Zmienne to liczby, słowa lub inne rzeczy, które (nieco oczywiście) się różnią. Wiersz polecenia ma zmienną funkcję. Ma kilka zmiennych, które są już ustawione, takie jak TIME, DATE i kilka innych. Większość zmiennych możesz jednak ustawić samodzielnie. Kliknij okno wiersza polecenia i wpisz:SET zmienna=losowoTo naprawdę nie ma znaczenia, czy napiszesz „SET” wielką literą, czy nie, ale lubię pisać wielką literą wszystkie moje polecenia, szczególnie podczas pisania plików wsadowych. To po prostu ułatwia określenie, co robisz. Teraz naciśnij Enter. Dobrze dla ciebie! Ustawiłeś swoją pierwszą zmienną! Ale co możemy z tym zrobić? kogo to obchodzi, jeśli wszystko, co możemy zrobić, to ustawić zmienną w prawo? Cóż, jak się okazuje, możemy zrobić o wiele więcej, ale najpierw spróbujmy skłonić komputer, aby powiedział nam, jaka jest ustawiona zmienna. Dobra, aby komputer odczytał wartość zmiennej, wpisujemy nazwę zmiennej, w tym przypadku "zmienna" i umieszczamy ją w znakach %, tak: %zmienna%. Śmiało, wpisz to i naciśnij enter:%variable%Dziwny błąd co? Komputer powiedział, że „zmienna” nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne, działający program lub plik wsadowy”. Dlaczego więc podał ten błąd? Cóż, w zasadzie dał ten błąd, ponieważ wiersz polecenia traktuje wartość tej zmiennej tak, jakbyś wpisał ją sam. Więc kiedy wpisałeś %zmienna%, komputer pomyślał, że każesz mu wykonać polecenie „losowo”. Oczywiście potrzebujemy czegoś innego, aby zobaczyć wartość naszej zmiennej. W tym miejscu pojawia się polecenie ECHO. Polecenie ECHO po prostu mówi Wierszowi Poleceń, aby powtórzył, lub powiedział, cokolwiek wpisałeś po ECHO. Tak więc, jeśli wpiszemy polecenie ECHO przed naszą zmienną, powinniśmy otrzymać to, czego chcemy: ECHO %variable%Tam! Teraz mamy to, czego chcemy! Komputer drukuje „losowo”. Oczywiście była to wartość, którą wpisaliśmy dla naszej zmiennej, więc jest to wynik, którego chcieliśmy. W następnym kroku dowiemy się więcej o zmiennych i sposobach ich wykorzystania.

Krok 3: Używanie polecenia SET i zmiennych

Korzystanie z polecenia SET i zmiennych
Korzystanie z polecenia SET i zmiennych
Korzystanie z polecenia SET i zmiennych
Korzystanie z polecenia SET i zmiennych

Dobrze, skoro już wiemy, czym są zmienne, co jeszcze możemy z nimi zrobić? Cóż, możemy robić matematykę, możemy używać ich jako warunków do pisania programów i plików wsadowych, możemy wykonywać podstawowe operacje arytmetyczne, możemy wykonywać polecenia i wiele więcej. Nie zajmiemy się wszystkim, co można zrobić ze zmiennymi, ale omówimy kilka ważnych aspektów funkcji zmiennej. Po pierwsze, samo polecenie SET generuje tylko zmienne łańcuchowe. Oznacza to, że nie doda ani nie wykona żadnej innej matematyki. Gdybyś powiedział komputerowi, aby dodał 1 do zmiennej o wartości 1, dałby ci wartość 1+1. Jeśli chcemy, aby faktycznie dodał dwie liczby, musimy umieścić "/a" po poleceniu SET. Dlatego wpisujemy:SET /a varible=(wartość)Teraz załóżmy, że chcemy umieścić zmienną w naszym pliku wsadowym, którą dostarczy użytkownik. Możemy chcieć to zrobić, jeśli obliczamy wartości według wzoru lub, w naszym przypadku, jeśli chcemy, aby użytkownik odgadł liczbę, którą wymyślił komputer. Aby wygenerować zmienną określoną przez użytkownika, dodajemy /p po poleceniu SET i opuszczamy obszar po = blank:SET /p variable=Proszę! Zmienna określona przez użytkownika! Gdybyśmy umieścili tę linię w pliku wsadowym, wsad działałby aż do osiągnięcia tej linii, a następnie czekałby na dane wejściowe użytkownika przed kontynuowaniem. Inną fajną rzeczą w /p jest to, że całkowicie neguje /a. Kiedy dołączamy /p, możemy po prostu pominąć /a. Następna rzecz, której się dowiemy, to wytwarzanie zmiennych losowych. Jeśli chcemy, aby komputer wybrał losową liczbę dla zmiennej, po prostu wpisujemy polecenie SET, a następnie zmienną, a następnie ustawiamy zmienną na wartość %RANDOM%. Po raz kolejny nie musi to być kapitał, ale i tak lubię to robić. Dlatego wpisujemy:SET /a zmienna=%RANDOM%Oczywiście nie jest to zmienna określona przez użytkownika, więc dołączamy /a. Fajny! Więc teraz wiemy, jak wyprodukować liczbę losową! Ale czy to jest losowe? Okazuje się, że komputer wybiera liczbę od 0 do około 37 000. Nie jestem pewien, jaka jest dokładna liczba. Ale co, jeśli chcemy mniejszej liczby? Załóżmy, że tak jak w tym Instructable, chcemy mieć możliwą do opanowania liczbę do czegoś w rodzaju gry w zgadywanie? Cóż, tutaj pojawia się polecenie JEŻELI….

Krok 4: Polecenia IF i GOTO. Moc w rękach pisarza wsadowego

Polecenia IF i GOTO. Moc w rękach pisarza wsadowego
Polecenia IF i GOTO. Moc w rękach pisarza wsadowego

Dlatego chcemy stworzyć możliwą do opanowania liczbę. Załóżmy, że chcemy uzyskać losową liczbę z zakresu od 1 do 20. Ok, łatwo powiedzieć, ale wartość RANDOM wybiera liczbę z zakresu od 1 do 37 000. Do tego celu użyjemy JEŻELI. Polecenie IF zasadniczo mówi JEŚLI coś się stanie lub JEŚLI coś jest równe lub nie jest równe określonej wartości, TO zrób TO. Tak więc JEŻELI ustawia polecenia warunkowe. Chcemy uzyskać liczbę mniejszą niż dwadzieścia, ale większą niż jeden, oczywiście zaczniemy od powiedzenia komputerowi, aby wybrał losową liczbę, ale potem będziemy musieli być w stanie powiedzieć mu, aby wybrał nową numer, jeśli wybrany numer nie spełnia naszych wymagań. W tym miejscu pojawia się polecenie GOTO. GOTO po prostu mówi komputerowi, aby PRZEJŚĆ DO określonej etykiety w kodzie. Etykiety wyglądają tak::pickKażde słowo umieszczone po dwukropku staje się etykietą, do której możemy uzyskać dostęp za pomocą polecenia GOTO. Tak więc, jeśli chcemy przejść do sekcji kodu z etykietą „pick” nad nią, po prostu wpisujemy:GOTO pickAlright, więc kontynuujmy nasze kodowanie. Powiedzieliśmy już komputerowi, aby wybrał losową liczbę, więc wpisaliśmy:SET /a answer=%RANDOM%Teraz chcemy zmniejszyć tę liczbę do mniejszego zakresu. Wywołamy więc polecenie IF. Coś takiego powinno załatwić sprawę: JEŻELI %odpowiedź% GTR 20 GOTO wybór To mówi komputerowi, aby wybrał GOTO, JEŚLI odpowiedź jest większa niż 20. Możemy również umieścić dowolny z tych warunków w tym poleceniu IF: EQU - RówneNEQ - Nie równe LSS - Mniej niż GTR - Większe niż LEQ - Mniejsze niż lub równe ToGEQ - Większe niż lub równe To Dzięki IF, GOTO, etykietom i tym skrótom możemy manipulować naszym plikiem wsadowym w dowolny sposób. Ok, więc mamy teraz naszą losową liczbę poniżej dwudziestu, a oto, co mamy do tej pory::pickSET /a answer=%RANDOM%IF %answer% GTR 20 GOTO wybierzTeraz upewnijmy się, że komputer t wybierz 0 jako odpowiedź.:pickSET /a answer=%RANDOM%IF %answer% GTR 20 GOTO wybierzIF $answer% EQU 0 GOTO wybierzOK! Teraz mamy użyteczną liczbę od 1 do 20. Przejdźmy do mięsa Partii.

Krok 5: Mięso naszej gry

Mięso naszej gry
Mięso naszej gry

W porządku, mamy nasz losowy numer. Chcemy również policzyć, ile odgadnie nasz gracz, więc ustawimy inną zmienną:SET /a guessnum=0To ustawia zmienną geussnum na zero, a my nadaliśmy jej parametr /a, więc będziemy mogli dodać do niego za każdym razem, gdy użytkownik zgaduje. Mamy losową liczbę i ustaliliśmy liczbę domysłów. Teraz potrzebujemy kilku instrukcji i musimy wprowadzić dane wejściowe użytkownika dla liczby przypuszczenia. Powinieneś już większość z tego zrozumieć, więc pokażę ci tylko kod::beginECHO Zamierzam wymyślić liczbęECHO myślę….. SET /a GuessNum=0(To ECHO zawiera te dwie linijki i ustawia liczbę prób na 0):pickASET /a odpowiedź=%RANDOM%IF %Answer% GTR 20 GOTO pickAIF %Answer% EQU 0 GOTO pickAECHO Myślę o liczbie od 1 do 20 ECHO Zgadnij, o jaką liczbę myślę z. (Ta sekcja zapętla się, dopóki nie ustawi naszej losowej liczby, a następnie ECHO wyśle instrukcje dla naszego gracza):RetrySET /p Guess=IF %Guess% LSS %Answer% ECHO Moja liczba jest wyższa. IF %Guess% GTR %Answer% ECHO Mój numer jest niższy. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1GOTO Ponów poprawny numer. Następnie przechodzi do etykiety END):ENDECHO Masz rację! Odpowiedź brzmiała: %Answer%ECHO Zajęło %GuessNum% Guesses. ECHO. PAUSECLSECHO Czy chcesz zagrać ponownie?ECHO T/N?SET /p play=IF %play% EQU y GOTO beginIF %play% EQU n GOTO closeIF % play% GTR y GOTO playagainIF %play% LSS y GOTO playagainIF %play% GTR n GOTO playagainIF %play% LSS n GOTO playagain(Oto nasza końcowa sekcja. Informuje ona użytkownika, ile zgadywał, a następnie pyta, czy chciałby grać ponownie. Zwróć uwagę, że możemy użyć EQU, GTR i LSS również z literami.) OK! Gdybyś po prostu skopiował ten kod, miałbyś legalną grę w zgadywanie. Niezbyt wymyślne, ale hej, to lepsze niż większość ludzi. Ale dodamy trochę niespodzianki, żeby było ciekawiej….

Krok 6: Skręt

Twist
Twist
Twist
Twist
Twist
Twist

Teraz mamy działającą grę, ale chcemy, aby była nieco ciekawsza. Co powiesz na dodanie zachęty dla naszego gracza do odgadnięcia właściwej liczby? A może zrobimy coś takiego jak… wyłączenie ich komputera, jeśli nie odgadną liczby? To byłoby całkiem fajne! OK, teraz dodamy mały kod, aby wprowadzić te zmiany. Najpierw dodamy wiersz do sekcji kodu, którą oznaczyliśmy jako „ponownie”. Więc znajdź tę sekcję. Wygląda to tak::RetrySET /p Guess=IF %Guess% LSS %Answer% ECHO Mój numer jest wyższy. IF %Guess% GTR %Answer% ECHO Mój numer jest niższy. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1GOTO Ponów OK, dodamy ten wiersz zaraz po „ECHO”. (Kiedy wstawiamy kropkę po ECHO, pozostawia pustą linię.) Oto nowy kod:IF %GuessNum% EQU 4 GOTO shutdownGPo dodaniu tej linii sekcja wygląda tak::RetrySET /p Guess=IF %Guess% LSS %Answer% ECHO Moja liczba jest wyższa. IF %Guess% GTR %Answer% ECHO Moja liczba jest niższa. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1IF %GuessNum% EQU 4 GOTO shutdownGGOTO Retry Do tej pory powinno być całkiem oczywiste, co to robi. Mówi komputerowi, że jeśli GuessNum równa się 4, powinien przejść do sekcji kodu oznaczonej „shutdownG”. Co więc chcemy powiedzieć tej sekcji wyłączania? Cóż, oczywiście musi to być oznaczone jako „shutdownG”. Następnie musi wyłączyć komputer. Poleceniem wyłączenia jest "SHUTDOWN -s". Spowoduje to wyłączenie komputera, ale chcemy dodać trochę do polecenia. Dodamy "-f". Wymusi to zamknięcie wszystkich programów i dodamy "-t 60". Dzięki temu komputer wyświetli okno i poczeka sześćdziesiąt sekund na zamknięcie. Dodamy również "-c "wiadomość tutaj"". co spowoduje wyświetlenie komunikatu w oknie zamykania. Po naszym poleceniu zamknięcia dodamy ten sam kod, który mamy powyżej, kod, który pozwala naszemu graczowi na wybieranie liczb i przekazywanie im informacji zwrotnych. Więc nasz kod zamknięcia wygląda teraz tak::shutdownGSHUTDOWN -s -f -t 60 -c "Zgaduj dalej! Jeśli nie odgadniesz właściwej liczby, komputer wyłączy się!":shutdownG1SET /p Guess=IF %Guess% LSS %Answer% ECHO Moja liczba jest wyższa. IF %Guess% GTR %Answer % ECHO Mój numer jest niższy. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1GOTO shutdownG1Teraz ustawiliśmy komputer na WYŁĄCZENIE i wyświetlamy komunikat, ale musimy również poinformować komputera, aby zatrzymać zamykanie, jeśli zostało zainicjowane. Dodamy to więc do sekcji kodowania oznaczonej „koniec”. Ta sekcja wygląda tak::ENDIF %GuessNum% GTR 4 SHUTDOWN -aECHO Masz rację! Odpowiedź brzmiała: %Answer%ECHO Zajęło %GuessNum% Guesses. ECHO. PAUSECLSECHO Czy chcesz zagrać ponownie?ECHO T/N?SET /p play=IF %play% EQU y GOTO beginIF %play% EQU n GOTO closeIF % play% GTR y GOTO playagainIF %play% LSS y GOTO playagainIF %play% GTR n GOTO playagainIF %play% LSS n GOTO playagainChcemy zatrzymać wyłączanie i robimy to za pomocą polecenia "SHUTDOWN -a". Dodamy więc linię, która będzie wyglądać tak: JEŻELI %GuessNum% GTR 4 SHUTDOWN -aDodamy to polecenie zaraz po etykiecie, a to powie komputerowi, aby uruchomił polecenie SHUTDOWN tylko wtedy, gdy gracz ma zrobił więcej niż cztery domysły i rozpoczął zamknięcie. W porządku! Twoja gra powinna być już skończona! W następnym kroku upewnimy się, że nie ma żadnych błędów.

Krok 7: Ostatnie kroki

Ostatnie kroki
Ostatnie kroki

Dobra, teraz, jeśli połączysz całe to kodowanie, otrzymasz coś, co wygląda mniej więcej tak::beginECHO Zamierzam wymyślić liczbęECHO myślę….. SET /a GuessNum=0:pickASET / a Answer=%RANDOM%IF %Answer% GTR 20 GOTO pickAIF %Answer% EQU 0 GOTO pickAECHO Myślę o liczbie od 1 do 20ECHO Zgadnij, o jakiej liczbie myślę.:RetrySET /p Guess=IF %Zgadnij % LSS %Answer% ECHO Moja liczba jest wyższa. IF %Guess% GTR %Answer% ECHO Moja liczba jest niższa. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1IF %GuessNum% EQU 4 GOTO shutdownGGOTO Ponów próbę:ENDIF %GuessNum% GTR 4 SHUTDOWN -aECHO Masz rację! Odpowiedź brzmiała: %Answer%ECHO Zajęło %GuessNum% Guesses. ECHO. PAUSECLSECHO Czy chcesz zagrać ponownie?ECHO T/N?SET /p play=IF %play% EQU y GOTO beginIF %play% EQU n GOTO closeIF % play% GTR y GOTO playagainIF %play% LSS y GOTO playagainIF %play% GTR n GOTO playagainIF %play% LSS n GOTO playagain:closeECHO Dziękujemy za grę!PAUSEEXIT cmd:shutdownGSHUTDOWN -s -f -t 60 -c Zgaduj Jeśli nie odgadniesz właściwej liczby, komputer się wyłączy!:shutdownG1SET /p Guess=IF %Guess% LSS %Answer% ECHO Mój numer jest wyższy. IF %Guess% GTR %Answer% ECHO Mój numer to Lower. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1GOTO shutdownG1To powinno być wszystko, czego potrzebujemy, prawda? Więc śmiało zapisz plik.txt notatnika jako GuessGame.bat. Właściwie możesz nazwać go, jak chcesz, pod warunkiem, że umieścisz.bat na końcu. Ok, więc kliknij ikonę i uruchom program! Zadziałało? Cóż, w pewnym sensie. Robi dziwne rzeczy, prawda? Okazuje się, że kiedy piszemy taką partię, wiersz polecenia ECHO wyświetla każde polecenie, które mu wydamy, tak jakbyśmy wpisali je w wierszu polecenia. Tak więc gra działa, ale jest trochę nieuporządkowana i niejasna. Czy możemy coś z tym zrobić? Tak! Wszystko, co musimy zrobić, to wpisać tę linię na samym początku naszego kodu:@ECHO OFF To mówi komputerowi, aby wyłączył ECHO. A znak @ na początku mówi mu, aby wyłączyć ECHO dla każdego polecenia. Gdybyśmy pominęli to @, wyłączyłoby ECHO tylko dla jednego polecenia.

Krok 8: Gotowe

Gratulacje! Właśnie napisałeś grę w pliku wsadowym. Całkiem proste, prawda? Jeśli poradzisz sobie z tym, możesz dowiedzieć się, jak radzić sobie z plikami wsadowymi. Po prostu pobaw się tym, zrób kilka eksperymentów. Na wypadek, gdyby coś nie zadziałało, lub jeśli coś pominąłem w całym tym kodowaniu, dam ci plik tutaj.

Zalecana: