Obsah:
- Krok 1: Príkaz START
- Krok 2: Príkaz SET - teória reťazcov (1/4)
- Krok 3: Príkaz SET - Mr.Math (2/4)
- Krok 4: Príkaz SET - vstup používateľa (3/4)
- Krok 5: Príkaz SET - viac, ako sa zdá (4/4)
- Krok 6: IF príkaz - všetci sú si rovní (1/2)
- Krok 7: IF Command - Ale ja som väčší ako vy (2/2)
- Krok 8: Príkaz GOTO
- Krok 9:> Parameter (1/2)
- Krok 10: >> Parameter (2/2)
- Krok 11: Príklad implementácie
- Krok 12: Záver: Záverečné poznámky
Video: Pokročilá dávka: 12 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:01
ale to je v poriadku, na zmenu adresára jednoducho použite príkaz CD alebo CHDIR. Na tom ale v tomto prípade až tak nezáleží. “,„ Hore “: 0,08480565371024736,„ vľavo “: 0,014285714285714285,„ výška “: 0,8586572438162544,„ šírka “: 0,9357142857142857}]">
PROSÍM PRIAMO MOŽNÉ OTÁZKY, KTORÉ MÔŽETE MAŤ NA MOJOM BLOGU: https://tamsanh.com/blog/2008/07/11/batch-tutorial-3-advanced-batch/ Už nenavštevujem návody a dostanete rýchlejšie odpovedzte tak. Hej, chlapci! Tu Nguyen. Trvalo to dlho, ale teraz je to tu! Predstavujem vám ďalšiu časť mojich Dávkových návodov! Možno ste (a možno nie) ste si prečítali moje ďalšie návody: Základy dávky Trochu pokročilejšia dávka, Táto inštrukcia si požičiava niektoré prvky z prvých dvoch pokynov. Konkrétne: Príkaz ECHO Príkaz CD Príkaz DIR Ak ste ešte nečítali ostatné dva, navrhujem rýchlo si tieto príkazy preštudovať. Počkám tu. Ok! Na konci tohto Instructable budete intímni s: START CommandSET CommandIF CommandGOTO Commandand> a >> Parametre S týmito príkazmi budete môcť vytvárať dynamické dávkové súbory, ktoré sa môžu meniť podľa vstupu užívateľa, a vytvorte a rozbalte. Takže otvorme ten dobrý príkazový riadok a môžeme začať! Spustiť-> cmd Alternatívne môžete prejsť na: Štart-> Programové súbory-> Príslušenstvo-> Príkazový riadok Moje vysvetlenia v tomto návode sa trochu predĺžili, preto som niektoré príkazy rozdelil na viac ako jednu stránku hlavne na estetické účely; Páčilo sa mi vidieť obrázky pri čítaní textu bez toho, aby som musel listovať hore a dole. Pravidlo pre prezeranie obrázkov; Obvykle po každom úryvku kódu je obrázok. Užite si to!
Krok 1: Príkaz START
Príkaz START je pekný malý príkaz, ktorý začína veci! Je to jednoduchý príkaz a pomôže nám zahriať sa, než sa dostaneme k ťažším príkazom. Parametre príkazu sú presne také, aké si myslíte.
ZAČNITE ThingToBeStarted.exeDocela jednoduché
ZAČNITE WMPlayer.exeMôžete nielen ZAČAŤ.exe, ale môžete aj zadať webovú stránku a otvorí sa vo vašom predvolenom prehliadači
ZAČNITE www. Instructables.comCelkom ľahké, čo? Ok. Teraz prejdeme k skutočnému mäsu príkazu Instructable: SET.
Krok 2: Príkaz SET - teória reťazcov (1/4)
Príkaz SET: definícia premennej. Ah. Premenné. Ambrózia vývojára. Premenné sú bity pamäte, ktoré sú … chyba, premenná. Žiadne IF ALEBO NIE! (lol, prepáč). Dobre! Ako teda funguje toto dieťa? Parametre príkazu SET sú veľmi jednoduché: SET VariableName = premenná ValueSET sama vytvorí reťazcové premenné.
NASTAVTE TestVS = testovací premenný reťazec!V tomto prípade sme práve uložili hodnotu „Testovať premenný reťazec!“do premennej TestVS. Je to zábava a hry, ale ako získame hodnotu premennej? Používame %. Stačí pridať % k názvu premennej
ECHO %TestVS %Dobre, ale čo iné môže robiť?
Krok 3: Príkaz SET - Mr. Math (2/4)
Dokáže to matematika? Urobme si jednoduchú dávku, aby sme to vyskúšali.
@ECHO OFFSET Test = 1ECHO%test%SET test =%test%-1ECHO%test%PAUZAAww, čo sa stalo? To malo fungovať! Počkajte chvíľu … Čo to bolo, keď príkazy SET vytvárali iba reťazce? Áno. Samotný príkaz SET vytvorí iba reťazcovú premennú, čo znamená, že vytvorí doslovnú interpretáciu hodnoty. Neznamená to, že „1 - 1“sa rovná „0“, ale „1 - 1“sa rovná „1 - 1.“Ako to teda zmeníme? Chceme, aby sa premenná nekopírovala priamo, ale aby sa vyhodnotila. To znamená, že ho chceme zmeniť z reťazca na výraz! Veľmi jednoduchá zmena, stačí pridať a /a do príkazu SET. Tu je jednoduchý dávkový súbor, ktorý ho použije v prevádzke, alebo ho môžete jednoducho napísať do manuálu príkazového riadka. Navrhujem to druhé; je to oveľa rýchlejšie a kód nie je príliš komplikovaný, ale ak skutočne chcete dávkový súbor, tu je
@ECHO OFFSET /a test = 2+2 ECHO %test %PAUZAFantastické! Perfektne to vyjadrilo. Teraz vieme, aké zmeny je potrebné vykonať na našom „matematickom teste.bat
@ECHO OFFSET /a test = 1ECHO%test%SET /a test =%test%-1ECHO%test%PAUSEOk. Tak poďme na to! Skvelé! Fungovalo to perfektne! Ale čo ďalej?
Krok 4: Príkaz SET - vstup používateľa (3/4)
SET má tiež možnosť vyzvať užívateľa na zadanie. Pridaním /p do parametrov SET ho transformuje z normálneho nastavovača premenných na užívateľsky ovládaný nastavovač premenných.
NASTAVIŤ /p UDefinovať =S /p sa program skutočne pozastaví a čaká na vstup používateľa. Ale počkajte, nevidím a /a parameter, znamená to, že premenná je iba reťazec? No, niečo na spôsob. Parameter /p parametrov úplne neguje parameter /a a ak sa o to pokúsite, jednoducho sa zobrazí chyba Missing operand. To znamená, že premenná definovaná používateľom nebude schopná vyhodnotiť výrazy. Čo teda možno urobiť? Tu je zložitý trik, o ktorom som si myslel, že ho môžeme použiť. Príkaz SET nevyžaduje iba súčasné používanie parametrov /p a /a, však? Ako je to s postupným používaním parametrov /a a /p? Ahhh … vy šibalské čižmy
@ECHO OFFECHO kalkulačka Verzia 1.0ECHO. SET /p UDefine = SET /a UDefine =%UDefine%ECHO = ECHO%UDefine%ECHO. PAUSEPekná kalkulačka, dostala si sa tam. Ak ste to ešte nepochopili, {{{ECHO.}}} Je prázdny riadok. Nie je to cool-cool?
Krok 5: Príkaz SET - viac, ako sa zdá (4/4)
V tomto mieste sa môže zdať, že premenné príkazu SET sú vhodné iba pre reťazce a výrazy. Nepravda. Premenné sú v skutočnosti veľmi flexibilné a neobmedzujú sa iba na ECHO. Skúsili ste zadať premennú samotnú?
NASTAVIŤ test = Pokyny%test%Aká zvláštna chyba … píše sa, že príkaz „Instructables“nebol rozpoznaný, nie že % Test % nemal žiadnu syntax. To znamená, že DOS zaobchádza s každou premennou tak, ako by bola napísaná ručne. No čo keby
SET Test = START cmd.exe%Test%Úžasné! Fungovalo to! DOS zaobchádza s každou premennou tak, ako ju zadal používateľ, a podľa toho ju spustí. Tu je zaujímavý kód: (Stačí skopírovať/prilepiť; je to trochu únavné.
@ECHO OffSET Premenná1 = ECSET Premenná2 = HSET Premenná3 = O CSET Premenná4 = ooSET Premenná5 = l! ECHO%premenná1 %% premenná2 %% premenná3 %% premenná4 %% premenná5%ECHO.%Premenná1 %% premenná2 %% premenná3 %% premenná4% %Premenná5%pauzaNie je to úhľadné? Každá premenná obsahuje dve písmená celej správy (okrem premennej 2) a uvedením premenných do poriadku sa každé písmeno sčíta a dokončí celý príkaz programu ECHO Cool! Príkaz SET je jedným z komplikovanejších a výkonnejších príkazov príkazu Slovník DOS.
Krok 6: IF príkaz - všetci sú si rovní (1/2)
Ten klasický podmienený operand. Základné, ale napriek tomu silné. Pre tých, ktorí nikdy predtým neprogramovali, príkaz IF je presne taký, ako znie. Ak sa výraz v syntaxi ukáže ako pravdivý (alebo NIE pravdivý), vykoná sa nasledujúca sekvencia príkazov. Základný príkazový riadok vyzerá takto:
IF%premenná1%==%premenná2%ECHO Táto časť je vykonanáalebo ak máte viac ako jednu syntax
@ECHO OFFIF%premenná1%==%premenná2%(ECHO Táto časť je vykonaná. ECHO Rovnako tak.) ELSE (ECHO Ak premenná1 nemá & apost = premennú 2, stane sa to. ECHO a toto sa tiež stáva.)Poznámka: Zvláštne umiestnenie zátvoriek nie je preto, že by som neveril v organizovaný kód, ale preto, že ak nie sú na týchto miestach, celý úryvok IF nebude fungovať. Ak teda existuje chyba s vašim kódom IF, je to pravdepodobne kvôli zátvorke. Na spustenie tejto konkrétnej dávky som skutočne použil samotný príkazový riadok, aby som mohol nastaviť premenné bez toho, aby som musel upravovať násobok súboru IfVariableTest.bat. krát.
Krok 7: IF Command - Ale ja som väčší ako vy (2/2)
Ok, takže máte pekný IF príkaz a všetko a kontrola, či sú premenné rovnaké alebo nie, je pekné a všetky, ale nie celkom vhodné pre účet. Chcem, aby sa niečo stalo, ak je premenná1 menšia ako druhá premenná! Pre nás, programátorov, viem, že sa to zdá byť jednoduchá úloha. Robte to, čo všetky ostatné programovacie jazyky! Dobre sa držte svojich kovbojských koní. Nie tak rýchlo. Dávkový súbor nie je len váš bežný programovací jazyk. Hlúpe, ako sa môže zdať, „“nefunguje s dávkovými súbormi.
EQU - Rovnaký - == NEQ - Nie je rovnakýLSS - Menej ako GTR - Väčší ako LEQ - Menej ako alebo rovnaký ToGEQ - Väčší ako alebo rovnýStačí vložiť tieto operandy na miesto == Príklad
IF 32 GTR 3 ECHO Toto bude fungovať
@ECHO OFFIF 32 GEQ 32 (ECHO 32 je väčší ako alebo sa rovná 32) ELSE (ECHO 32 je určite ekvivalentný 32) PAUSEIF 32 LSS 32 (ECHO 32 je menší ako 32? Myslím, že nie.) ELSE (ECHO 32 je Nie menej ako 32. Koniec príbehu.) PAUZA
Krok 8: Príkaz GOTO
Príkaz GOTO. Robí presne to, čo hovorí; prejde na štítok v skripte dávkového súboru. Ak chcete použiť tento príkaz, musíte najskôr mať štítok na mieste. Štítky vyzerajú takto:
: Štítok 1Je to jednoducho dvojbodka pred radom písmen a/alebo číslic bez medzier. Príkaz GOTO je štruktúrovaný takto
GOTO Label1Je to také ľahké! Keď sa nad tým zamyslím, nie som si celkom istý, prečo som to nedal do Mierne rozšírenej dávky. V každom prípade tento príkaz možno použiť na zopakovanie dávkového súboru jednoduchým GOTO označením, ktoré znova vykoná príkaz GOTO.
@ECHO VYPNUTÉ: RepeatMeECHO Toto sa bude opakovať, pokiaľ nestlačíte „CTRL-C“GOTO RepeatMeMimochodom, dávkový súbor hovorí pravdu. CTRL-C je univerzálna pauza a výzva na ukončenie. CTRL-S je jednoducho Pozastaviť. Zatvorenie okna však funguje rovnako dobre. GOTO môže váš kód preskočiť alebo tiež zmeniť poradie
GOTO TurnEOffGOTO MultipleGotoECHO Toto ECHO bude preskočené.:MultipleGotoGOTO 3: ENDPAUSEEXIT: 1ECHO The EndGOTO END: 3ECHO Toto sa zobrazí ako prvéGOTO 2: TurnEOff@ECHO OFFGOTO MultipleGoto: 2ECHO Toto je druhé, aj keď v kóde zostáva posledná. 1Vyššie uvedený kód bol účelovo štruktúrovaný mätúco, aby sa zdôraznila schopnosť GOTO preskočiť v kóde.
Krok 9:> Parameter (1/2)
Parameter (1/2) "src =" https://content.instructables.com/ORIG/FBH/P5XV/F3JESWI8/FBHP5XVF3JESWI8-j.webp
Parameter (1/2) "src =" https://content.instructables.com/ORIG/FIX/9BXW/F3JESWI5/FIX9BXWF3JESWI5-j.webp
Parameter (1/2) "src =" https://content.instructables.com/ORIG/FHZ/92ZS/F3JESWI7/FHZ92ZSF3JESWI7-j.webp
Parameter (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} "> Tento nasledujúci bit nie je v skutočnosti„ príkazom “, ale skôr pridanou syntaxou do iných Príkazy. Čo robí, je, že potrebuje výstup určitého príkazu a môže ho zapísať do textového súboru. Jednoduchšie sa to vysvetľuje, ak ho najskôr uvidíte v akcii. Jeho syntax je:
Príkaz> Názov súboruDobre, povedzme, že sme v určitom adresári. Potom použijeme príkaz DIR, ktorý keby ste si prečítali Základy dávky, vedeli by ste, že ukazuje obsah vášho aktuálneho adresára
C: / Users / Neo \> DIRNormálne by vystupoval
Volume in drive C is HP Volume Serial Number is BC7E-E26C Directory of C: / Users / Neo2007-30-06 11:14 AM.2007-30-06 11:14 AM..2007-17-03 18:41 PM.idlerc2007-19-02 15:14 Kontakty2007-19-06 22:44 Desktop2007-29-06 08:47 Dokumenty2007-19-06 10:35 Stiahnutia2007-19-02 15:14 Obľúbené02/19/ 2007 15:14 Odkazy2007-12-05 16:01 Hudba2007-30-06 01:20 Obrázky2007-07-04 15:08 Uložené hry2007-19-02 15:14 PM Vyhľadávania2007-01-03 07:23 Záznam o teste PM 242, 947.wma2007-19-06 10:39 AM Videos2007-18-06 09:57 AM 1, 324, 574 wp_screenprint_mc.pdf2007-18-06 09:59 AM 73, 996, 533 wp_tshirt_full.mp4 4 File (s) 75, 564, 054 bytes 14 Dir (s) 132, 927, 537, 152 bytes freeAk však k tomu pridáme znamienko> a
C: / Users / Neo / DIR> DIRContents.txtNedostávame výstup, ale namiesto toho dostávame úplne nový, textový súbor s názvom DIRContents.txt, ktorý obsahuje výstup! Cool! Ale počkajte, je tu problém! Chcem mať viac výstupov v jednom súbore, ale moje> to stále prepisuje a nepridáva! Čo robím?
Krok 10: >> Parameter (2/2)
Parameter (2/2) "src =" https://content.instructables.com/ORIG/FG4/B58B/F3JESWIJ/FG4B58BF3JESWIJ-j.webp
Parameter (2/2) "src =" https://content.instructables.com/ORIG/F05/GZB1/F3JESWIK/F05GZB1F3JESWIK-j.webp
Parameter (2/2) "src =" https://content.instructables.com/ORIG/F93/Q7VS/F3JESWL2/F93Q7VSF3JESWL2-j.webp
Parameter (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} "> Som rád, že ste sa pýtali. Na to slúži >> parameter! >> je ako>, ale namiesto úplného prepísania zadaného súboru ho pridáme! Skúsme to teda.
DIR >> DIRContents.txtÚhľadné! Fungovalo perfektne! Tak pockaj Znamená to, že môžem do textového súboru písať čokoľvek chcem? Chcem to skúsiť
Dávka je úžasná> Awesome.txtČo? Prečo to nefungovalo? Dôvodom je, že parameter zapisuje iba výstup legitímnych príkazov, nielen čokoľvek, čo zadáte. Ale toto je problém, ktorý je jednoducho vyriešený. Nezabudnite, že parametre zaznamenávajú výstup príkazov. Aký príkaz má výstup, ktorý môžeme ovládať? Správne! Velenie ECHO
Dávka ECHO je úžasná> Awesome.txtECHO Som veľmi rád, že to viem. >> Awesome.txtJéj! Pamätajte si. >> pridá výstup na nasledujúci riadok súboru.
Krok 11: Príklad implementácie
Ok. Poďme to teda dať všetko dohromady! Tu je niekoľko ukážkových kódov, ktoré som vytvoril a ktoré používajú príkazy, ktoré som vám ukázal v tomto návode. Tento kód bude do premennej nepretržite pridávať 1 a výsledok bude generovať na neurčito.
@ECHO OFFSET /a num = 1: Opakujte ECHO%num%SET /a num =%num%+1GOTO opakujteTento kód sa spustí CMD.exe 5 -krát
@ECHO OFFSET /a RepeatNum = 5: OpenIF%RepeatNum%== 0 GOTO EndSTART CMD.exeSET /a RepeatNum =%RepeatNum%-1GOTO Open: EndTento kód vytvorí dávkový súbor v priečinku C: / Users / Neo a spustí ho
@ECHO OFFCHDIR C: / Users / NeoECHO @ECHO OFF> Hello.batECHO ECHO Hello! >> Hello.batECHO ECHO I & aposm in your C Drive! >> Hello.batECHO PAUSE >> Hello.batC: / Users / Neo / Hello. batPauseToto je malá herná dávka. Musíte uhádnuť číslo
@ECHO OFFSET /a GuessNum = 0SET /a odpoveď =%RANDOM%ECHO Hádajte, na aké číslo myslím.: OpakujteSET /p Hádajte = IF%Hádajte%LSS%Odpovedajte%ECHO Moje číslo je vyššie. IF%Hádajte%GTR%odpoveď %ECHO Moje číslo je nižšie. IF%Hádajte%==%Odpovedzte%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO Opakujte: ENDECHO Máte pravdu! Odpoveď bola %odpoveď %ECHO Trvalo to %GuessNum %Guesses. ECHO. PAUSEA tento sa mi veľmi páči. Ak si však nedáte pozor, v závislosti od schopností vášho počítača sa vám môže vymknúť z rúk pomerne rýchlo. Tento súbor robí to, že neobmedzene vytvára číslované textové súbory v adresári s názvom lolnumbers. Každý z týchto textových súborov obsahuje DIR adresára lolnumbers. Ide o to, že adresár je s textovými súbormi neustále plnší a plnší, takže každý nasledujúci textový súbor je väčší ako posledný. Výsledkom je priečinok, ktorého celková veľkosť je každú sekundu väčšia a väčšia
@ECHO OFFSET /a num = 1MKDIR lolnumbers CD lolnumbers: RestartDIR>%num%.txtSET /a num+= 1GOTO ReštartToto sú celkom základné kódy. Experimentujte s nimi do sýtosti.
Krok 12: Záver: Záverečné poznámky
Fuj. V tomto návode sme toho prešli sakra veľa. Tento je skutočne trikrát dlhší ako ten môj posledný. Dúfam, že sa vám bude páčiť! Len pár pripomienok, než pôjdem. Pamätajte si: Pri nastavovaní premennej nikdy nedávajte medzeru medzi premennou a jej hodnotou. ÁNO:
SET premenná1 = hodnotaExtra priestor spôsobí, že vaša premenná bude prázdna. NIE
SET premenná1 = hodnotaTiež viacnásobné IF. Nezabudnite závorku správne naformátovať: ÁNO
AK 1 == 1 (ECHO jeden sa rovná jednému!) INAK (ECHO niečo nie je v poriadku s týmto programom.)NIE
AK 1 == 1 (ECHO jeden sa rovná jednému!) INAK (ECHO niečo nie je v poriadku s týmto programom.)Existujú tiež vstavané premenné
%CD %% DATE %% TIME %% RANDOM%% CD% Rozbalí sa do aktuálneho adresára. V zásade je cestou za prvými>% DATE% a% TIME% dátum a čas.% RANDOM% dáva náhodné číslo od 0 do 32767. Rozsah sa podľa mňa nedá zmeniť. A tým to v zásade je! Dúfam, že sa vám tento návod páčil, tvrdo som na ňom pracoval. Dúfam, že to vynahradí 10 -mesačnú neprítomnosť. Teraz zlá správa. V nasledujúcich mesiacoch budem mať trochu problém zodpovedať akékoľvek otázky, pretože budem mimo krajiny. Ak však máte otázku, zanechajte komentár komukoľvek. Ak získam prístup k počítaču, určite odpoviem, ale nemyslím si, že to bude potrebné; Instructables je priateľská komunita a som si istý, že niekto tam vonku vám pomôže vo vašej situácii. Šťastné dávkovanie!
Odporúča:
Ako si vytvoriť vlastný OS! (dávka a príklad vo vnútri): 5 krokov
Ako si vytvoriť vlastný OS! (dávka a príklad vo vnútri): Urobte to hneď
1,8 TFT LCD pokročilá meteorologická stanica: 5 krokov
1,8 TFT LCD pokročilá meteorologická stanica: Trochu menšia, ale väčšia
Pokročilá pomoc pri rezaní: 10 krokov (s obrázkami)
Cutting Aid Advanced: The Cutting Aid je nástroj určený na rezanie bez použitia svalov na ruke/prstoch. Tento produkt bol pôvodne navrhnutý pre niekoho, kto miluje prácu v kuchyni, ale trpí svalovými obmedzeniami prstov. Prepracovali sme t
Box na zátky do ucha D4E1 (POKROČILÁ EDÍCIA): 9 krokov
Box na zátky do uší D4E1 (POKROČILÁ EDÍCIA): V roku 2016 vyvinuli 3 naši študenti z Howestu škatuľu na uloženie štupľov do uší, ktoré je možné namontovať na vychádzkovú palicu. Tento rok sme dizajn ešte viac optimalizovali a digitálne upravili na univerzálne použitie. Ľudia môžu náš produkt ľahko používať nasledovne
Základná dávka: 6 krokov
Základná dávka: V tomto návode vám ukážem základy CMD a dávkových súborov, nižšie je obrázok môjho okna cmd. Toto je môj prvý návod