Obsah:

Pokročilá dávka: 12 kroků
Pokročilá dávka: 12 kroků

Video: Pokročilá dávka: 12 kroků

Video: Pokročilá dávka: 12 kroků
Video: Jak se finančně připravit na Vánoce? 5 kroků 2024, Listopad
Anonim

ale to je v pořádku, jednoduše změňte adresář pomocí příkazu CD nebo CHDIR. Na tom ale v tomto případě vlastně nezáleží. “,„ Nahoře “: 0,08480565371024736,„ vlevo “: 0,014285714285714285,„ výška “: 0,8586572438162544,„ šířka “: 0,9357142857142857}]">

Pokročilá dávka
Pokročilá dávka
Pokročilá dávka
Pokročilá dávka
Pokročilá dávka
Pokročilá dávka

PROSÍM PŘÍMO JAKÉKOLI OTÁZKY, KTERÉ MŮŽETE MÍT NA MŮJ BLOG: https://tamsanh.com/blog/2008/07/11/batch-tutorial-3-advanced-batch/ Už nenavštěvuji instructables a získáte rychlejší tak odpovězte. Tady Nguyen. Trvalo to dlouho, ale teď je to tady! Představuji vám další splátku mých Dávkových návodů! Možná jste (a možná také ne) jste si přečetli mé další instruktáže: Základy BatchMírně více pokročilé BatchThis Instructable si půjčuje některé prvky z prvních dvou Instructables. Jmenovitě: Příkaz ECHO Příkaz CD Příkaz DIR Pokud jste si nepřečetli zbývající dva, doporučuji tyto příkazy rychle prohlédnout. Počkám zde. Ok! Na konci tohoto Instructable budete intimní s: START CommandSET CommandIF CommandGOTO Commandand> a >> Parametry Pomocí těchto příkazů budete moci vytvářet dynamické dávkové soubory, které se mohou měnit podle zadání uživatele, a vytvořte a rozbalte. Pojďme tedy otevřít ten dobrý příkazový řádek a začít! Spustit-> cmd Alternativně můžete přejít na: Start-> Programové soubory-> Příslušenství-> Příkazový řádek Moje vysvětlení v tomto pokynu se trochu prodloužilo, tak jsem některé příkazy rozdělil na více než jednu stránku hlavně pro estetické účely; Líbilo se mi vidět obrázky při čtení textu, aniž bych se musel posouvat nahoru a dolů. Pravidlo pro prohlížení obrázků; Obvykle po každém fragmentu kódu je obrázek. Užijte si to!

Krok 1: Příkaz START

Příkaz START
Příkaz START
Příkaz START
Příkaz START
Příkaz START
Příkaz START
Příkaz START
Příkaz START

Příkaz START je pěkný malý příkaz, který začíná věci! Je to jednoduchý příkaz a pomůže nám zahřát se, než se dostaneme k těžším příkazům. Parametry příkazu jsou přesně takové, jaké si myslíte, že jsou.

ZAČNĚTE ThingToBeStarted.exeDocela jednoduché

SPUŠTIT WMPlayer.exeNejen, že můžete ZAČÍT.exe, můžete také zadat webovou stránku a otevře se ve vašem výchozím prohlížeči

ZAČNĚTE www. Instructables.comDocela snadné, že? OK. Nyní přejdeme ke skutečnému masu příkazu Instructable: SET.

Krok 2: Příkaz SET - teorie strun (1/4)

Příkaz SET - teorie strun (1/4)
Příkaz SET - teorie strun (1/4)
Příkaz SET - teorie strun (1/4)
Příkaz SET - teorie strun (1/4)

Příkaz SET: Definice proměnné. Ah. Proměnné. Ambrosie vývojáře. Proměnné jsou bity paměti, které jsou … err, proměnné. Žádné IFS A nebo NOT o tom! (lol, promiň). OK! Jak tedy funguje toto dítě? Parametry příkazu SET jsou velmi jednoduché: SET VariableName = proměnná ValueSET sama vytvoří řetězcové proměnné.

SET TestVS = Test variabilní řetězec!V tomto případě jsme právě uložili hodnotu „Testovat proměnný řetězec!“do proměnné TestVS. No, to je zábava a hry, ale jak získáme hodnotu proměnné? Používáme %. Stačí přidat % kolem názvu proměnné

ECHO %TestVS %Dobře, ale co jiného to dokáže?

Krok 3: Příkaz SET - Mr. Math (2/4)

Příkaz SET - Mr. Math (2/4)
Příkaz SET - Mr. Math (2/4)
Příkaz SET - Mr. Math (2/4)
Příkaz SET - Mr. Math (2/4)
Příkaz SET - Mr. Math (2/4)
Příkaz SET - Mr. Math (2/4)

Umí to matematika? Pojďme si udělat jednoduchou dávku, abychom to vyzkoušeli.

@ECHO OFFSET Test = 1ECHO%Test%SET Test =%Test%-1ECHO%Test%PAUSEAww, co se stalo? To mělo fungovat! Počkejte chvíli … co to bylo, když příkazy SET vytvářely pouze řetězce? Ano. Samotný příkaz SET vytvoří pouze řetězcovou proměnnou, což znamená, že vytvoří nej doslovnější interpretaci hodnoty. Nemyslí na „1 - 1“rovnající se „0“, ale na „1 - 1“rovnající se „1 - 1.“Jak to tedy změníme? Chceme, aby proměnná nebyla kopírována přímo, ale vyhodnocena. To znamená, že chceme z řetězce vytvořit výraz! Velmi snadná změna, jednoduše přidejte a /a do příkazu SET. Zde je jednoduchý dávkový soubor, který jej uvidíte v akci, nebo jej můžete jednoduše zadat do manuálu příkazového řádku. Navrhuji to druhé; je to mnohem rychlejší a kód není příliš složitý, ale pokud opravdu chcete dávkový soubor, tady je

@ECHO OFFSET /a Test = 2+2 ECHO %Test %PAUSEFantastický! Perfektně to vyjádřilo. Nyní víme, jaké změny je třeba provést na našem 'math test.bat

@ECHO OFFSET /a Test = 1ECHO%Test%SET /a Test =%Test%-1ECHO%Test%PAUSEOK. Tak pojďme to spustit! Skvělé! Fungovalo to perfektně! Ale co dál?

Krok 4: Příkaz SET - Vstup uživatele (3/4)

Příkaz SET - uživatelský vstup (3/4)
Příkaz SET - uživatelský vstup (3/4)
Příkaz SET - uživatelský vstup (3/4)
Příkaz SET - uživatelský vstup (3/4)
Příkaz SET - uživatelský vstup (3/4)
Příkaz SET - uživatelský vstup (3/4)

SET má také možnost vyzvat uživatele k zadání. Přidáním /p do parametrů SET jej transformuje z normálního nastavovače proměnných na uživatelem řízený nastavovač proměnných.

SET /p UDefine =S /p se program vlastně pozastaví a čeká na vstup uživatele. Ale počkejte, nevidím a /a parametr, znamená to, že proměnná je pouze řetězec? No, něco jako. Parametr /p parametrů zcela neguje parametr /a, a pokud se o to pokusíte, jednoduše se zobrazí chyba Chybějící operand. To znamená, že uživatelem definovaná proměnná nebude schopna vyhodnotit výrazy. Co tedy lze dělat? No, tady je záludný trik, o kterém jsem si myslel, že ho můžeme použít. Příkaz SET nevyužívá všechny současné použití parametrů /p a /a, že? A co sekvenční použití parametrů /a a /p? Ahhh … vy chytráci

@ECHO OFFECHO Calculator Verze 1.0ECHO. SET /p UDefine = SET /a UDefine =%UDefine%ECHO = ECHO%UDefine%ECHO. PAUSEPěkná kalkulačka, kterou jste dostali. Pokud jste to ještě nepochopili, {{{ECHO.}}} Je prázdný řádek. Není to cool-cool?

Krok 5: Příkaz SET - více, než se zdá (4/4)

Příkaz SET - Více než se zdá (4/4)
Příkaz SET - Více než se zdá (4/4)
Příkaz SET - More Than Meets the Eye (4/4)
Příkaz SET - More Than Meets the Eye (4/4)
Příkaz SET - Více než se zdá (4/4)
Příkaz SET - Více než se zdá (4/4)

V tomto okamžiku se může zdát, že proměnné příkazu SET jsou dobré pouze pro řetězce a výrazy. Není pravda. Proměnné jsou ve skutečnosti velmi velmi flexibilní a neomezují se pouze na ECHO. Zkoušeli jste jen zadat proměnnou samotnou?

SET Test = Instructables%Test%Jaká zvláštní chyba … říká, že příkaz „Instructables“nebyl rozpoznán, nikoli že % Test % neměl žádnou syntaxi. To tedy znamená, že DOS zachází s každou proměnnou, jako by byla napsána ručně. No a co kdyby

SET Test = START cmd.exe%Test%Skvělý! Fungovalo to! DOS zachází s každou proměnnou tak, jak ji zadal uživatel, a podle toho ji spouští. Zde je zajímavý kód: (Stačí zkopírovat/vložit; je to trochu únavné.

@ECHO OffSET Proměnná1 = ECSET Proměnná2 = HSET Proměnná3 = O CSET Proměnná4 = ooSET Proměnná5 = l! ECHO%Proměnná1 %% Proměnná2 %% Proměnná3 %% Proměnná4 %% Proměnná5%ECHO.%Proměnná1 %% Proměnná2 %% Proměnná3 %% Proměnná4% %Proměnná 5%PauzaNení to úhledné? Každá proměnná obsahuje dvě písmena celé zprávy (kromě proměnné 2), a když si proměnné uvedete do pořádku, každé písmeno se sečte a dokončí celý příkaz ECHO Cool! Příkaz SET je jedním ze složitějších a výkonnějších příkazů Slovník DOS.

Krok 6: IF Command - Všichni jsou si rovni (1/2)

IF příkaz - Všichni jsou si rovni (1/2)
IF příkaz - Všichni jsou si rovni (1/2)
IF příkaz - Všichni jsou si rovni (1/2)
IF příkaz - Všichni jsou si rovni (1/2)
IF příkaz - Všichni jsou si rovni (1/2)
IF příkaz - Všichni jsou si rovni (1/2)

Ten klasický podmíněný operand. Základní, ale přesto výkonný. Pro ty, kteří nikdy předtím neprogramovali, je příkaz IF přesně tak, jak zní. Pokud se výraz v syntaxi ukáže jako pravdivý (nebo NE), provede se následující sekvence příkazů. Základní příkazový řádek vypadá takto:

IF%proměnná1%==%proměnná2%ECHO Tato část je spuštěnanebo pokud máte více než jednu syntaxi

@ECHO OFFIF%proměnná1%==%proměnná2%(ECHO Tato část je spuštěna. ECHO Stejně tak.) JINAK (ECHO Pokud proměnná1 nedělá & apost = proměnná 2, stane se to. ECHO a toto se také stane.)Poznámka: Zvláštní umístění závorek není proto, že nevěřím v organizovaný kód, ale proto, že pokud na těchto místech nejsou, celý IF fragment nebude fungovat. Pokud tedy ve vašem kódu IF existuje nějaká chyba, je to pravděpodobně kvůli závorkám. Ke spuštění této konkrétní dávky jsem ve skutečnosti použil samotný příkazový řádek, abych mohl nastavit proměnné, aniž bych musel upravovat násobek IfVariableTest.bat krát.

Krok 7: IF Command - Ale já jsem větší než vy (2/2)

IF Command - But I'm Greater Than You (2/2)
IF Command - But I'm Greater Than You (2/2)
IF Command - But I'm Greater Than You (2/2)
IF Command - But I'm Greater Than You (2/2)
IF Command - But I'm Greater Than You (2/2)
IF Command - But I'm Greater Than You (2/2)

Dobře, takže máte pěkný příkaz IF a vše a kontrola, zda jsou proměnné stejné nebo ne, je hezké a vše, ale ne zcela odpovídá účtu. Chci, aby se něco stalo, pokud proměnná1 je menší než druhá proměnná! Pro ty z nás programátorů vím, že to vypadá jako jednoduchý úkol. Udělejte to, co všechny ostatní programovací jazyky! Dobře se držte kovbojských koní. Ne tak rychle. Dávkový soubor není jen váš běžný programovací jazyk. Jakkoli se může zdát hloupé, "" nefungují s dávkovými soubory.

EQU - Equal - == NEQ - Not EqualLSS - Less ThanGTR - Greater ThanLEQ - Less Than or Equal ToGEQ - Greater Than or Equal ToStačí umístit tyto operandy na místo == Příklad

IF 32 GTR 3 ECHO To bude fungovat

@ECHO OFFIF 32 GEQ 32 (ECHO 32 je větší než nebo rovno 32) ELSE (ECHO 32 je rozhodně rovno 32) PAUSEIF 32 LSS 32 (ECHO 32 je menší než 32? Myslím, že ne.) ELSE (ECHO 32 je Ne méně než 32. Konec příběhu.) PAUZA

Krok 8: Příkaz GOTO

Příkaz GOTO
Příkaz GOTO
Příkaz GOTO
Příkaz GOTO
Příkaz GOTO
Příkaz GOTO

Příkaz GOTO. Dělá přesně to, co říká; přejde na štítek ve skriptu dávkového souboru. Chcete -li použít tento příkaz, musíte nejprve mít štítek na místě. Štítky vypadají takto:

: Štítek 1Je to prostě dvojtečka před řadou písmen a/nebo číslic bez mezer. Příkaz GOTO je strukturován takto

Štítek GOTO 1Je to tak snadné! Když se nad tím zamyslím, nejsem si úplně jistý, proč jsem to nedal do Mírně pokročilé dávky. V každém případě lze tento příkaz použít k opakování dávkového souboru jednoduše GOTO štítkem, který znovu provede příkaz GOTO

@ECHO VYPNUTO: RepeatMeECHO Toto se bude opakovat, pokud nestisknete „CTRL-C“GOTO RepeatMeMimochodem, dávkový soubor mluví pravdu. CTRL-C je univerzální pozastavení a výzva k ukončení. CTRL-S je jednoduše Pozastavit. Ale zavření okna funguje stejně dobře. GOTO může váš kód přeskočit nebo také změnit pořadí

GOTO TurnEOffGOTO MultipleGotoECHO Toto ECHO bude přeskočeno.: MultipleGotoGOTO 3: ENDPAUSEEXIT: 1ECHO The EndGOTO END: 3ECHO Toto se zobrazí jako první GOTO 2: TurnEOff@ECHO OFFGOTO MultipleGoto: 2ECHO Toto je druhé, i když v kódu poslední 1Výše uvedený kód byl záměrně strukturován matoucí, aby zdůraznil schopnost GOTO skákat v kódu.

Krok 9:> Parametr (1/2)

Příklad implementace
Příklad implementace

Parametr (1/2) "src =" https://content.instructables.com/ORIG/FBH/P5XV/F3JESWI8/FBHP5XVF3JESWI8-j.webp

Příklad implementace
Příklad implementace

Parametr (1/2) "src =" https://content.instructables.com/ORIG/FIX/9BXW/F3JESWI5/FIX9BXWF3JESWI5-j.webp

Příklad implementace
Příklad implementace

Parametr (1/2) "src =" https://content.instructables.com/ORIG/FHZ/92ZS/F3JESWI7/FHZ92ZSF3JESWI7-j.webp

Závěr: Závěrečné poznámky
Závěr: Závěrečné poznámky

Parametr (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">

Parametr (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">

Parametr (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">

Parametr (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">

Parametr (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} "> Tento další bit není ve skutečnosti 'příkaz', ale spíše přidaná syntaxe do jiných Co to dělá je, že to vyžaduje výstup určitého příkazu a může to zapsat do textového souboru. Je snazší to vysvětlit, pokud to vidíte nejprve v akci. Jeho syntaxe je:

Příkaz> Název souboruDobře, řekněme, že jsme v určitém adresáři. Poté použijeme příkaz DIR, který, pokud si přečtete Základy dávky, budete vědět, že zobrazuje obsah aktuálního adresáře

C: / Users / Neo \> DIRNormálně by výstup

Objem na disku C je sériové číslo svazku HP BC7E-E26C Adresář 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 Kontakty 06.06.2007 22:44 Desktop2007-29-06 08:47 Dokumenty2007-19-06 10:35 Stažené soubory2007-19-02 15:14 Oblí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 Hledání2007-01-03 07:23 Záznam o testu 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 Soubor (y) 75, 564, 054 bytů 14 adresářů 132, 927, 537, 152 bytů zdarmaAle pokud k tomu přidáme> a

C: / Users / Neo / DIR> DIRContents.txtNedostáváme výstup, ale místo toho dostáváme zcela nový textový soubor s názvem DIRContents.txt, který obsahuje výstup! Cool! Ale počkejte, je tu problém! Chci mít více výstupů ve stejném souboru, ale můj> to stále přepisuje a nepřidává! Co mám dělat?

Krok 10: >> Parametr (2/2)

Parametr (2/2) "src =" https://content.instructables.com/ORIG/FG4/B58B/F3JESWIJ/FG4B58BF3JESWIJ-j.webp

Parametr (2/2) "src =" https://content.instructables.com/ORIG/F05/GZB1/F3JESWIK/F05GZB1F3JESWIK-j.webp

Parametr (2/2) "src =" https://content.instructables.com/ORIG/F93/Q7VS/F3JESWL2/F93Q7VSF3JESWL2-j.webp

Parametr (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">

Parametr (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">

Parametr (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">

Parametr (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">

Parametr (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">

Parametr (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} "> Jsem rád, že jste se zeptal. K tomu slouží >> parametr! >> je stejně jako>, ale místo toho, abychom úplně přepsali zadaný soubor, přidáme do něj! Zkusme to tedy.

DIR >> DIRContents.txtElegantní! Fungovalo perfektně! Tak počkej. Znamená to, že do textového souboru mohu napsat cokoli chci? Chci to zkusit

Dávka je úžasná> Awesome.txtCo? Proč to nefungovalo? Je to proto, že parametr zapisuje pouze výstup Legitimních příkazů, nejen cokoli, co zadáte. Ale toto je problém, který je jednoduše vyřešen. Pamatujte, že parametry zaznamenávají výstup příkazů. Jaký příkaz má výstup, který můžeme ovládat? Správně! Velení ECHO

Dávka ECHO je úžasná> Awesome.txtECHO Jsem tak rád, že to vím. >> Awesome.txtJé! Pamatovat si. >> přidá výstup na další řádek souboru.

Krok 11: Příklad implementace

OK. Pojďme to tedy dát dohromady! Zde je několik ukázkových kódů, které jsem vytvořil a které používají příkazy, které jsem vám ukázal v tomto návodu.

@ECHO OFFSET /a num = 1: Opakovat ECHO%num%SET /a num =%num%+1GOTO RepeatTento kód spustí CMD.exe 5krát

@ECHO OFFSET /a RepeatNum = 5: OpenIF%RepeatNum%== 0 GOTO EndSTART CMD.exeSET /a RepeatNum =%RepeatNum%-1GOTO Open: EndTento kód vytvoří dávkový soubor v 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 uhodnout číslo

@ECHO OFFSET /a GuessNum = 0SET /a Odpověď =%RANDOM%ECHO Hádejte, na jaké číslo myslím & myslím:: OpakujteSET /p Hádejte = IF%Hádejte%LSS%Odpověď%ECHO Moje číslo je vyšší. IF%Hádejte%GTR%Odpověď %ECHO Moje číslo je nižší. IF%Hádej%==%Odpověď%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO Opakovat: ENDECHO Máte pravdu! Odpověď byla %Odpověď %ECHO Trvalo %GuessNum %Guesses. ECHO. PAUSEA tenhle se mi moc líbí. Pokud si ale nedáte pozor, může se vám to vymknout z rukou poměrně rychle, v závislosti na schopnostech vašeho počítače. Tento soubor dělá to, že neomezeně vytváří číslované textové soubory v adresáři zvaném lolnumbers. Každý z těchto textových souborů obsahuje DIR adresáře lolnumbers. Věc se má tak, že adresář je s textovými soubory neustále plnější a plnější, takže každý následující textový soubor je větší než ten předchozí. Výsledkem je složka, jejíž celková velikost se každou sekundu zvětšuje a zvětšuje

@ECHO OFFSET /a num = 1MKDIR lolnumbers CD lolnumbers: RestartDIR>%num%.txtSET /a num+= 1GOTO RestartTo jsou docela základní kódy. Experimentujte s nimi do sytosti.

Krok 12: Závěr: Závěrečné poznámky

Fuj. V tomto pokynu jsme toho probrali opravdu hodně. Tenhle je vlastně 3krát delší než ten můj poslední. Doufám, že si to užijete! Jen pár připomínek, než půjdu. Pamatujte: Při nastavování proměnné nikdy nevkládejte mezeru mezi proměnnou a její hodnotu. ANO:

SET proměnná1 = hodnotaExtra prostor způsobí, že vaše proměnná bude prázdná. NE

SET proměnná1 = hodnotaTaké více IF. Nezapomeňte závorku správně naformátovat: ANO

KDYŽ 1 == 1 (ECHO jeden se rovná jednomu!) JINAK (ECHO Něco s tímto programem pokazilo.)NE

KDYŽ 1 == 1 (ECHO jeden se rovná jednomu!) JINAK (ECHO Něco s tímto programem považuje za špatné.)Existují také vestavěné proměnné

%CD %% DATE %% TIME %% RANDOM%% CD% Rozbalí se do aktuálního adresáře. V zásadě cesta za první>% DATE% a% TIME% je Datum a Čas.% RANDOM% udává náhodné číslo mezi 0 a 32767. Rozsah nelze změnit, nemyslím si. A tím to v podstatě je! Doufám, že se vám tento návod líbil, pracoval jsem na něm opravdu tvrdě. Doufejme, že to vynahradí 10měsíční nepřítomnost. Nyní špatná zpráva. V příštích několika měsících budu mít trochu problém zodpovědět jakékoli otázky, protože budu mimo zemi. Pokud ale máte otázku, zanechte komentář komukoli. Pokud získám přístup k počítači, určitě odpovím, ale nemyslím si, že to bude nutné; Instructables je přátelská komunita a jsem si jist, že vám někdo venku pomůže ve vaší situaci. Šťastné dávkování!

Doporučuje: