Cuprins:
- Pasul 1: Comanda START
- Pasul 2: SET Comanda - Teoria șirurilor (1/4)
- Pasul 3: Comanda SET - Mr.Math (2/4)
- Pasul 4: Comanda SET - Intrare utilizator (3/4)
- Pasul 5: Comanda SET - More Than Meets the Eye (4/4)
- Pasul 6: IF Command - Toți sunt egali (1/2)
- Pasul 7: Comandă IF - Dar sunt mai mare decât tine (2/2)
- Pasul 8: Comandă GOTO
- Pasul 9:> Parametru (1/2)
- Pasul 10: >> Parametru (2/2)
- Pasul 11: Exemplu de implementare
- Pasul 12: Concluzie: Note finale
Video: Lot avansat: 12 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:46
dar este ok, pur și simplu folosiți comanda CD sau CHDIR pentru a schimba directorul. Dar nu contează cu adevărat în acest caz. "," Sus ": 0.08480565371024736," stânga ": 0.014285714285714285," înălțime ": 0.8586572438162544," lățime ": 0.9357142857142857}]">
Vă rugăm să vă adresați oricăror întrebări pe care le-ați putea avea la blogul meu: https://tamsanh.com/blog/2008/07/11/batch-tutorial-3-advanced-batch/ răspuns în felul acesta. Tam Nguyen aici. A trecut mult timp, dar este aici acum! Vă prezint următoarea tranșă a Tutorialelor mele în lot! Este posibil (sau nu) să fi citit celelalte instructabile ale mele: Noțiuni de bază ale lotului Mai puțin avansat Acest instructabil împrumută câteva elemente din primele două instructabile. Și anume: ECHO CommandCD CommandDIR Command Dacă nu le-ați citit pe celelalte două, vă sugerez să căutați acele comenzi rapid-repede. Voi aștepta aici. Ok! Până la sfârșitul acestui instructabil, veți fi intim cu: START CommandSET CommandIF CommandGOTO Commandand> și >> Parametri Cu aceste comenzi, veți putea face fișiere dinamice batch care se pot modifica în funcție de introducerea utilizatorului, și creați și extindeți. Deci, haideți să deschidem acel Prompt de comandă bun și să începeți! Rulați -> cmd Alternativ, puteți accesa: Start-> Fișiere de program-> Accesorii-> Prompt de comandă Explicațiile mele din acest instructable au durat puțin., așa că am împărțit unele comenzi în mai multe pagini, în principal în scopuri estetice; Mi-a plăcut să văd imaginile în timp ce citeam textul fără a fi nevoie să derulez în sus și în jos. Regula generală pentru vizualizarea imaginilor; De obicei, după fiecare fragment de cod, există o imagine. Bucură-te!
Pasul 1: Comanda START
Comanda START este o mică comandă drăguță care pornește lucruri! Este o comandă simplă și ne va ajuta să ne încălzim înainte de a ajunge la comenzile mai grele. Parametrii comenzii sunt exact ceea ce credeți că sunt.
Porniți ThingToBeStarted.exeDestul de simplu
Porniți WMPlayer.exeNu numai că poți PORNI.exe, poți și să introduci un site web și acesta se va deschide în browserul tău implicit
Porniți www. Instructables.comDestul de ușor, nu? Bine. Acum să trecem la adevărata carne a comenzii Instructable: SET.
Pasul 2: SET Comanda - Teoria șirurilor (1/4)
Comanda SET: Definitorul variabilului. Ah. Variabile. Ambrozia dezvoltatorului. Variabilele sunt biți de memorie care sunt … erori, variabile. Fără IFS ANDs sau NOTs despre asta! (lol, scuze). Bine! Deci, cum funcționează acest copil? Foarte simplu, parametrii comenzii SET sunt: SET VariableName = Variable ValueSET de la sine va crea variabile șir.
SET TestVS = Testarea șirului variabil!În acest caz, tocmai am stocat valoarea „Test Variable String!” în variabila TestVS. Ei bine, asta e distracție și jocuri, dar cum recuperăm valoarea variabilei? Folosim%. Doar adăugăm% în jurul numelui variabilei
ECHO% TestVS%Ok cool, dar ce altceva mai poate face?
Pasul 3: Comanda SET - Mr. Math (2/4)
Poate face matematică? Ei bine, să facem un lot simplu pentru a-l testa.
@ECHO OFFSET Test = 1ECHO% Test% SET Test =% Test% -1ECHO% Test% PAUSEAww, ce s-a întâmplat? Ar fi trebuit să funcționeze! Așteptați un minut … ce a fost asta despre comenzile SET care fac doar șiruri? Da. Comanda SET prin ea însăși va crea doar o variabilă șir, ceea ce înseamnă că va crea interpretarea cea mai literală a valorii. Nu se gândește la „1 - 1” egal cu „0”, se gândește la „1 - 1” egal la „1 - 1.” Deci, cum o schimbăm? Vrem ca variabila să nu fie copiată direct, ci evaluată. Aceasta înseamnă că vrem să-l transformăm dintr-un șir într-o expresie! O schimbare foarte ușoară, pur și simplu adăugați a / a la comanda SET. Iată un fișier batch simplu pentru a-l vedea în acțiune, sau îl puteți tasta doar în manualul Command Prompt. Îi sugerez pe acesta din urmă; este mult mai rapid, iar codul nu este prea complicat, dar dacă doriți cu adevărat fișierul batch, iată-l
@ECHO OFFSET / a Test = 2 + 2ECHO% Test% PAUSEFantastic! A exprimat-o perfect. Acum știm ce modificări trebuie făcute la „testul nostru de matematică
@ECHO OFFSET / a Test = 1ECHO% Test% SET / a Test =% Test% -1ECHO% Test% PAUSEBine. Așa că hai să-l rulăm! Super! A funcționat perfect! Dar ce urmează?
Pasul 4: Comanda SET - Intrare utilizator (3/4)
SET are, de asemenea, capacitatea de a solicita utilizatorului intrarea. Prin adăugarea / p la parametrii SET, îl transformă dintr-un setter variabil normal într-un setter variabil controlat de utilizator.
SET / p UDefine =Cu p / P al parametrilor neagă complet / a și, dacă îl încercați, obțineți pur și simplu o eroare de operand lipsă. Aceasta înseamnă că variabila Definită de utilizator nu va putea evalua expresiile. Deci, ce se poate face? Iată un truc complicat pe care l-am gândit, pe care îl putem folosi. Comanda SET nu este corectă utilizarea simultană a parametrilor / p și / a? Ei bine, ce zici de utilizarea secvențială a parametrilor / a și / p? Ahhh … cizme viclene
@ECHO OFFECHO Calculator Versiunea 1.0ECHO. SET / p UDefine = SET / a UDefine =% UDefine% ECHO = ECHO% UDefine% ECHO. PAUSEFrumos calculator ai ajuns acolo. Dacă nu v-ați dat seama până acum, {{{ECHO.}}} Este o linie goală. Nu-i așa?
Pasul 5: Comanda SET - More Than Meets the Eye (4/4)
În acest moment, poate părea că variabilele comenzii SET sunt bune numai pentru șiruri și expresii. Neadevarat. De fapt, variabilele sunt foarte flexibile și nu se limitează doar la ECHO-uri. Ați încercat doar să tastați o variabilă de la sine?
SET Test = Instructables% Test%Ce eroare ciudată … se spune că comanda „Instructables” nu este recunoscută, nu că% Test% nu avea sintaxă. Deci asta înseamnă că DOS tratează fiecare variabilă așa cum a fost tastată manual. Ei bine, ce se întâmplă dacă
SET Test = START cmd.exe% Test%Minunat! A funcționat! DOS tratează fiecare variabilă așa cum a fost tastată de utilizator și o rulează în consecință. Iată un cod interesant: (Doar Copiați / Lipiți; este un pic plictisitor.
@ECHO OffSET Variable1 = ECSET Variable2 = HSET Variable3 = O CSET Variable4 = ooSET Variable5 = l! ECHO% Variable1 %% Variable2 %% Variable3 %% Variable4 %% Variable5% ECHO.% Variable1 %% Variable2 %% Variable4% % Variabilă 5% PauzăNu-i așa îngrijit? Fiecare variabilă conține două litere din întregul mesaj (cu excepția Variablei 2) și, punând variabilele în ordine, fiecare literă se adaugă și finalizează întreaga comandă a ECHO Cool! Comanda SET este una dintre cele mai complicate și mai puternice comenzi ale Dicționar DOS.
Pasul 6: IF Command - Toți sunt egali (1/2)
Acel operand condițional clasic. De bază, dar puternic, totuși. Pentru cei care nu au programat niciodată înainte, comanda IF este exact cum sună. Dacă o expresie din sintaxă se dovedește adevărată (sau NU este adevărată), atunci se va efectua următoarea succesiune de comenzi. Linia de comandă de bază merge astfel:
IF% variable1% ==% variable2% ECHO Această parte este executatăsau dacă aveți mai multe sintaxi
@ECHO OFFIF% variabila1% ==% variabila2% (ECHO Această parte este executată. ECHO Așa este și asta.) ELSE (ECHO Dacă variabila1 nu & apost = variabila 2, acest lucru se întâmplă. ECHO și acest lucru se întâmplă și.)Notă: plasarea particulară a parantezei nu este pentru că nu cred în codul organizat, ci pentru că dacă nu sunt în acele locuri, întregul fragment IF nu va funcționa. Astfel, dacă există vreo eroare la codul IF, este cel mai probabil din cauza parantezei. Pentru a rula acest lot special, am folosit de fapt promptul de comandă în sine, astfel încât să pot seta variabilele fără a trebui să editez multiplul IfVariableTest.bat. ori.
Pasul 7: Comandă IF - Dar sunt mai mare decât tine (2/2)
Ok, deci aveți o declarație IF frumoasă și toate, iar verificarea dacă variabilele sunt egale sau nu este frumoasă și toate, dar nu se potrivește cu factura. Vreau să se întâmple ceva dacă variabila 1 este mai mică decât cealaltă variabilă! Pentru noi, programatori, știu că acest lucru pare o sarcină simplă. Fă ceea ce fac toate celelalte limbaje de programare! Ține-ți caii cowboy. Nu asa de repede. Un fișier Batch nu este doar limbajul dvs. obișnuit de programare. Oricât de stupid ar părea, "" nu funcționează cu fișierele Batch.
EQU - Egal - == NEQ - Nu Egal LSS - Mai puțin decât GTR - Mai mare decât LEQ - Mai puțin decât sau egal la GEQ - Mai mare decât sau egal cuDoar puneți acești operanzi în locul Exemplului ==
IF 32 GTR 3 ECHO Acest lucru va funcționa
@ECHO OFFIF 32 GEQ 32 (ECHO 32 este mai mare decât sau egal cu 32) ELSE (ECHO 32 este cu siguranță egal cu 32) PAUSEIF 32 LSS 32 (ECHO 32 este mai mic decât 32? Cred că nu.) ELSE (ECHO 32 este Nu mai puțin de 32. Sfârșitul poveștii.) PAUZĂ
Pasul 8: Comandă GOTO
Comanda GOTO. Face exact ceea ce spune; merge la o etichetă în scriptul fișierului batch. Pentru a utiliza această comandă, trebuie mai întâi să aveți o etichetă în loc. Etichetele arată astfel:
: Eticheta1Este pur și simplu un punct înaintea unei serii de litere și / sau numere fără spațiu. Comanda GOTO este structurată astfel
GOTO Label1Este atât de ușor! Gândiți-vă la asta, nu sunt sigur de ce nu am introdus acest lucru în Batch-ul ușor avansat.
@ECHO OFF: RepeatMeECHO Acest lucru se va repeta dacă nu apăsați „CTRL-C” GOTO RepeatMeDe altfel, fișierul lot spune adevărul. CTRL-C este pauza universală și promptul de reziliere. CTRL-S este pur și simplu Pauză. Însă închiderea ferestrei funcționează la fel de bine. GOTO poate sări sau poate reordona și codul
GOTO TurnEOffGOTO MultipleGotoECHO Acest ECHO va fi omis.:MultipleGotoGOTO 3: ENDPAUSEEXIT: 1ECHO EndGOTO END: 3ECHO Acest lucru va fi afișat mai întâi 1Codul de mai sus a fost structurat în mod confuz intenționat pentru a sublinia capacitatea GOTO de a sări în jurul codului.
Pasul 9:> Parametru (1/2)
Parametru (1/2) "src =" https://content.instructables.com/ORIG/FBH/P5XV/F3JESWI8/FBHP5XVF3JESWI8-j.webp
Parametru (1/2) "src =" https://content.instructables.com/ORIG/FIX/9BXW/F3JESWI5/FIX9BXWF3JESWI5-j.webp
Parametru (1/2) "src =" https://content.instructables.com/ORIG/FHZ/92ZS/F3JESWI7/FHZ92ZSF3JESWI7-j.webp
Parametru (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parametru (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parametru (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parametru (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parametru (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} "> Următorul bit nu este de fapt o„ comandă”, ci mai degrabă o sintaxă adăugată în altele comenzi. Ceea ce face este că ia ieșirea unei anumite comenzi și o poate scrie într-un fișier text. Este mai ușor de explicat dacă o vedeți mai întâi în acțiune. Sintaxa sa este:
Comandă> Numele fișieruluiOk, deci să spunem că suntem într-un anumit director. Apoi folosim comanda DIR, pe care, dacă citiți Noțiunile de bază ale lotului, le-ați ști ca afișând conținutul directorului dvs. curent
C: / Users / Neo \> DIRAr ieși în mod normal
Volumul în unitatea C este volumul HP Numărul de serie este BC7E-E26C Directorul C: / Users / Neo06 / 30/2007 11:14 AM.06 / 30/2007 11:14 AM.. 2007-03-03 06:41 PM.idlerc02 / 19/2007 03:14 PM Contacte06 / 19/2007 22:44 Desktop06 / 29/2007 08:47 AM Documente 2007-06-19 10:35 AM Descărcări02 / 19/2007 15:14 Favorite02 / 19 / 2007 03:14 PM Legături05 / 12/2007 04:01 PM Muzică06 / 30/2007 01:20 Imagini04 / 07/2007 15:08 Jocuri salvate 2007-02-19 15:14 Căutări03 / 01/2007 07:23 PM 242, 947 Test Record.wma06 / 19/2007 10:39 AM Video06 / 18/2007 09:57 1, 324, 574 wp_screenprint_mc.pdf06 / 18/2007 09:59 AM 73, 996, 533 wp_tshirt_full.mp4 4 Fișier (e) 75, 564, 054 octeți 14 Dir (e) 132, 927, 537, 152 octeți gratuitDar, dacă adăugăm> și la acesta
C: / Users / Neo / DIR> DIRContents.txtNu obținem o ieșire, dar în schimb, obținem un fișier de text nou-numit DIRContents.txt, care are ieșirea! Răceală! Dar așteaptă, există o problemă! Vreau să am mai multe ieșiri în același fișier, dar> pur și simplu îl suprascrie și nu îl adaug! Ce fac?
Pasul 10: >> Parametru (2/2)
Parametru (2/2) "src =" https://content.instructables.com/ORIG/FG4/B58B/F3JESWIJ/FG4B58BF3JESWIJ-j.webp
Parametru (2/2) "src =" https://content.instructables.com/ORIG/F05/GZB1/F3JESWIK/F05GZB1F3JESWIK-j.webp
Parametru (2/2) "src =" https://content.instructables.com/ORIG/F93/Q7VS/F3JESWL2/F93Q7VSF3JESWL2-j.webp
Parametru (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parametru (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parametru (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parametru (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parametru (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parametru (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} "> Ei bine, mă bucur că ați întrebat. Pentru asta este folosit >> Parametrul! >> este la fel ca>, dar în loc să suprascrieți complet fișierul specificat, îl adăugăm! Deci, să încercăm.
DIR >> DIRContents.txtIngrijit! A funcționat perfect! Deci asteapta. Asta înseamnă că pot scrie orice vreau într-un fișier text? vreau să încerc
Lotul este minunat> Awesome.txtCe? De ce nu a funcționat? Acest lucru se datorează faptului că parametrul scrie doar rezultatul comenzilor legitime, nu doar orice introduceți. Dar aceasta este o problemă care este rezolvată pur și simplu. Amintiți-vă, parametrii înregistrează ieșirea comenzilor. Ce comandă are o ieșire pe care o putem controla? Comanda ECHO
ECHO Batch Is Awesome> Awesome.txtECHO I și aposm atât de bucuros că îl știu. >> Awesome.txtYay! Tine minte. >> adaugă ieșirea la următoarea linie a fișierului.
Pasul 11: Exemplu de implementare
Bine. Deci, să punem totul împreună! Iată câteva exemple de coduri pe care le-am creat, care utilizează comenzile pe care vi le-am arătat în acest instructable. Acest cod va adăuga 1 la o variabilă în mod continuu și va genera rezultatul pe termen nelimitat.
@ECHO OFFSET / a num = 1: Repetați ECO% num% SET / a num =% num% + 1 Repetați GOTOAcest cod va porni CMD.exe de 5 ori
@ECHO OFFSET / a RepeatNum = 5: OpenIF% RepeatNum% == 0 GOTO EndSTART CMD.exeSET / a RepeatNum =% RepeatNum% -1GOTO Open: EndAcest cod va crea un fișier batch în C: / Users / Neo și îl va rula
@ECHO OFFCHDIR C: / Users / NeoECHO @ECHO OFF> Hello.batECHO ECHO Bună ziua! >> Bună ziua.batECHO ECHO Eu și aposm în unitatea dvs. C! >> Bună ziua.batECHO PAUSE >> Hello.batC: / Users / Neo / Hello. batPauseAcesta este un mic lot de joc. Trebuie să ghiciți numărul
@ECHO OFFSET / a GuessNum = 0SET / a Răspuns =% RANDOM% ECHO Ghiciți la ce număr mă gândesc și aposm.:RetrySET / p Ghici = IF% Ghici% LSS% Răspuns% ECHO Numărul meu este mai mare. IF% Ghici% GTR% Răspuns % ECHO Numărul meu este mai mic. IF% Guess% ==% Răspuns% GOTO ENDECHO. SET / a GuessNum =% GuessNum% + 1GOTO Încercați din nou: ENDECHO Sunteți corect! Răspunsul a fost% Răspuns% ECHO A fost nevoie de% GuessNum% Guesses. ECHO. PAUSEȘi acesta, îmi place mult. Cu toate acestea, dacă nu sunteți atent, acesta poate scăpa de sub control destul de repede, în funcție de capacitatea computerului. Ce face acest fișier este că creează în mod nedefinit fișiere text numerotate într-un director numit lolnumbers. Fiecare dintre aceste fișiere text conține DIR din directorul lolnumbers. Problema este că directorul devine din ce în ce mai complet cu fișierele text, deci fiecare fișier text consecutiv este mai mare decât precedentul. Rezultatul este un dosar a cărui dimensiune totală devine din ce în ce mai mare în fiecare secundă
@ECHO OFFSET / a num = 1MKDIR lolnumbers CD lolnumbers: RestartDIR>% num%.txtSET / a num + = 1GOTO RestartAcestea sunt coduri destul de simple. Experimentează cu ele după pofta inimii tale.
Pasul 12: Concluzie: Note finale
Phew. Am acoperit o mulțime de lucruri în acest instructable. Acesta este, de fapt, de 3 ori mai lung decât ultimul meu. Sper că vă va plăcea! Doar câteva memento-uri înainte să plec. Amintiți-vă: Când setați o variabilă, nu puneți niciodată un spațiu între variabilă și valoarea ei. DA:
Variabila SET1 = ValoareSpațiul suplimentar va face ca variabila dvs. să fie necompletată. NU
Variabila SET1 = ValoareDe asemenea, IF-urile multiple. Nu uitați să formatați corect Paranteze: DA
IF 1 == 1 (ECHO One Equals One!) ALTĂNU
IF 1 == 1 (ECHO One Equals One!) ALTĂDe asemenea, există și variabile încorporate
% CD %% DATE %% TIME %% RANDOM%% CD% Se extinde la directorul curent. Practic, calea din spatele primelor>% DATE% și% TIME% sunt Data și Ora.% RANDOM% dă un număr aleatoriu între 0 și 32767. Intervalul nu poate fi schimbat, nu cred. Și asta este practic! Sper că ți-a plăcut acest lucru instructiv, am muncit din greu la el. Sperăm că va compensa absența de 10 luni. Acum vești proaste. Voi avea un pic de probleme să răspund la orice întrebări în următoarele câteva luni, pentru că voi fi în afara țării. Dar dacă aveți o întrebare, lăsați un comentariu oricui. Dacă primesc acces la un computer, voi răspunde cu siguranță, dar nu cred că va fi necesar; Instructables este o comunitate prietenoasă și sunt sigur că cineva de acolo te va ajuta în situația ta dificilă.
Recomandat:
Robot avansat de urmărire a liniei: 22 de pași (cu imagini)
Robot avansat de urmărire a liniei: Acesta este un robot avansat de urmărire a liniei bazat pe senzorul de linie Teensy 3.6 și QTRX pe care l-am construit și la care lucrez de ceva timp. Există câteva îmbunătățiri majore în design și performanță de la robotul meu de linie anterioară. T
Model avansat computer de zbor cu rachetă !: 4 pași (cu imagini)
Advanced Model Rocket Flight Computer !: Aveam nevoie de un computer high-end model de rachetă pentru cea mai nouă rachetă care se controla fără aripioare! Motivul pentru care am decis să construiesc acest lucru a fost pentru că construiesc rachete TVC (thrust vector control). Aceasta înseamnă că există
Pandantiv LED avansat: 4 pași
Pandantiv cu LED avansat: În acest instructabil, vă voi arăta cum vă puteți crea propriul pandantiv cu LED. Ar trebui să verificați pandantivul meu cu LED-ul anterior instructabil, vă arăt câteva sfaturi grozave. Bijuteriile fac parte din frumusețe? Vom afla
Sistem de securitate avansat: 7 pași
Sistem de securitate avansat: Ați dorit vreodată să vă asigurați complet casa și să faceți imposibilă intrarea intrușilor în casă? Dacă da, aceasta este soluția pentru dvs.! Am creat Advanced Security System, acesta este un sistem care vă va asigura casa din interior și din exterior
Robot avansat de urmărire a liniei: 7 pași
Robot avansat de urmărire a liniei: Acesta este un robot de urmărire a liniei cu câteva caracteristici suplimentare. Acest prototip poate fi utilizat în interiorul unei fabrici pentru mișcarea materialului fără șofer. Există două stații de încărcare stație de descărcare stație de descărcare De la stația de încărcare robotul va aștepta Materia