Indholdsfortegnelse:
- Trin 1: START -kommando
- Trin 2: SET -kommando - strengteori (1/4)
- Trin 3: SET Command - Mr.Math (2/4)
- Trin 4: SET -kommando - brugerindgang (3/4)
- Trin 5: SET Command - More Than Meets Eye (4/4)
- Trin 6: IF Command - Alle er lige (1/2)
- Trin 7: IF Command - Men jeg er større end dig (2/2)
- Trin 8: GOTO Command
- Trin 9:> Parameter (1/2)
- Trin 10: >> Parameter (2/2)
- Trin 11: Eksempelimplementering
- Trin 12: Konklusion: Endelige noter
Video: Avanceret batch: 12 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:30
men det er ok, bare brug kommandoen CD eller CHDIR til at ændre bibliotek. Men det gør ikke rigtig noget i denne sag. "," Top ": 0.08480565371024736," venstre ": 0.014285714285714285," højde ": 0.8586572438162544," bredde ": 0.9357142857142857}]">
RIGTIGE SPØRGSMÅL, DU KAN HA TIL MIN BLOG: https://tamsanh.com/blog/2008/07/11/batch-tutorial-3-advanced-batch/Jeg besøger ikke instruktører mere, og du får en hurtigere svar på den måde. Hej fyre! Tam Nguyen her. Det har været længe siden, men det er her nu! Jeg præsenterer for dig den næste del af mine batchvejledninger! Du har (eller måske ikke) læst mine andre instruktioner: Basics of BatchSlyly More Advanded Batch Denne instruktør låner nogle elementer fra de to første instruktioner. Nemlig: ECHO CommandCD CommandDIR CommandIf du ikke har læst de to andre, foreslår jeg, at du ser hurtigt over disse kommandoer. Jeg venter her. Ok! Ved afslutningen af denne Instructable vil du være intim med: START CommandSET CommandIF CommandGOTO Commandand> og >> Parameters Med disse kommandoer vil du være i stand til at lave dynamiske batchfiler, som kan ændres i henhold til brugerinput, og opret og udvid. Så lad os åbne det gode kommandoprompt og komme i gang! Kør-> cmd Alternativt kan du gå til: Start-> Programfiler-> Tilbehør-> Kommandoprompt Mine forklaringer i denne instruktive blev lidt lange, så jeg har delt nogle kommandoer op i mere end én side hovedsageligt til æstetiske formål; Jeg kunne godt lide at se billederne, mens jeg læste teksten uden at skulle rulle op og ned. Tommelfingerregel for billedvisning; Normalt efter hvert kodestykke er der et billede. Nyd!
Trin 1: START -kommando
START -kommandoen er en fin lille kommando, der starter ting! Det er en simpel kommando, og vil hjælpe os med at varme op, før vi kommer til de hårdere kommandoer. Kommandoens parametre er præcis, hvad du tror, de er.
START ThingToBeStarted.exeRet simpelt
START WMPlayer.exeDu kan ikke kun STARTE.exe, du kan også skrive et websted ind, og det åbnes i din standardbrowser
START www. Instructables.comRet let, ikke? Okay. Lad os nu gå videre til det rigtige kød fra Instructable: SET Command.
Trin 2: SET -kommando - strengteori (1/4)
SET -kommandoen: Variable Definer. Ah. Variabler. Udviklerens ambrosia. Variabler er bit af hukommelse, der er … fejl, variabel. Ingen IF'er OG'er eller IKKE om det! (lol, undskyld). Okay! Så hvordan fungerer denne baby? Meget simpelt er parametrene for SET -kommandoen: SET VariableName = Variable ValueSET vil i sig selv oprette strengvariabler.
SET TestVS = Test variabel streng!I dette tilfælde lagrede vi bare værdien "Test variabel streng!" i variablen TestVS. Jamen, det er alt sammen sjov og spil, men hvordan henter vi variabelværdien? Vi bruger %. Bare tilføj % omkring variabelnavnet
ECHO %TestVS %Ok sejt, men hvad kan det ellers gøre?
Trin 3: SET Command - Mr. Math (2/4)
Kan den lave matematik? Lad os lave et simpelt parti for at teste det.
@ECHO OFFSET Test = 1ECHO%Test%SET Test =%Test%-1ECHO%Test%PAUSEØv, hvad skete der? Det skulle have virket! Vent lidt … hvad var det med SET -kommandoer, der kun lavede strenge? Ja. SET -kommandoen i sig selv vil kun oprette en strengvariabel, hvilket betyder, at den vil skabe den mest bogstavelige fortolkning af værdien. Det tænker ikke på "1 - 1", der svarer til "0", det tænker på "1 - 1", der svarer til "1 - 1." Så hvordan ændrer vi det? Vi vil have, at variablen ikke kopieres direkte, men evalueres. Det betyder, at vi vil gøre det fra en streng til et udtryk! En meget let ændring, bare tilføj a /a til SET -kommandoen. Her er en simpel batchfil for at se den i aktion, eller du kan bare skrive den i kommandopromptmanualen. Jeg foreslår det sidste; det er meget hurtigere, og koden er ikke for kompliceret, men hvis du virkelig vil have batchfilen, er den her
@ECHO OFFSET /a Test = 2+2ECHO %Test %PAUSEFantastisk! Det udtrykte det perfekt. Nu ved vi, hvilke ændringer der skal foretages i vores matematiske test. Bat
@ECHO OFFSET /a Test = 1ECHO%Test%SET /a Test =%Test%-1ECHO%Test%PAUSEOkay. Så lad os køre det! Fantastisk! Det fungerede perfekt! Men hvad så?
Trin 4: SET -kommando - brugerindgang (3/4)
SET'et har også mulighed for at bede brugeren om input. Ved at tilføje /p til SET-parametrene, transformerer det det fra en normal variabel-setter til en brugerstyret variabel-setter.
SET /p UDefine =Med /p stopper programmet faktisk og venter på brugerens input. Men vent, jeg kan ikke se a /a parameter, betyder det, at variablen kun er en streng? Nå, sådan. Parameternes /p negerer helt /a, og hvis du prøver det, får du simpelthen en manglende operandfejl. Det betyder, at den brugerdefinerede variabel ikke vil være i stand til at evaluere udtryk. Så hvad kan man gøre? Nå, her er et vanskeligt trick, som jeg tænkte på, som vi kan bruge. SET -kommandoen gør ikke al den samtidige brug af parametre /p og /a, korrekt? Nå, hvad med den sekventielle brug af parametrene /a og /p? Ahhh … dine listige støvler
@ECHO OFFECHO lommeregner version 1.0ECHO. SET /p UDefine = SET /a UDefine =%UDefine%ECHO = ECHO%UDefine%ECHO. PAUSEDejlig lommeregner, du er der. Hvis du ikke har fundet ud af det nu, er {{{ECHO.}}} En tom linje. Er det ikke fedt?
Trin 5: SET Command - More Than Meets Eye (4/4)
På dette tidspunkt kan det se ud til, at variablerne i SET -kommandoen kun er gode til strenge og udtryk. Ikke sandt. Variablerne er faktisk meget meget fleksible og er ikke kun begrænset til ECHO'er. Har du prøvet bare at skrive en variabel alene?
SET Test = Instructables%Test%Hvilken underlig fejl … det siger, at kommandoen "Instructables" ikke genkendes, ikke at % Test % ikke havde nogen syntaks. Så det betyder, at DOS behandler hver variabel, som om den var skrevet i hånden. Tja, hvad nu hvis
SET Test = START cmd.exe%Test%Fantastisk! Det fungerede! DOS behandler hver variabel, som den var skrevet af brugeren, og kører den i overensstemmelse hermed. Her er en interessant kode: (Bare kopier/indsæt; det er lidt kedeligt.
@ECHO OffSET Variabel1 = ECSET Variabel2 = HSET Variabel3 = O CSET Variabel4 = ooSET Variabel5 = l! ECHO%Variabel1 %% Variabel2 %% Variabel3 %% Variabel4 %% Variabel5%ECHO.%Variabel1 %% Variabel2 %% Variabel3 %% Variabel4% %Variabel5%PauseEr det ikke pænt? Hver variabel indeholder to bogstaver i hele meddelelsen (undtagen Variabel2), og sætter variablerne i rækkefølge, tilføjer hvert bogstav og afslutter hele kommandoen i ECHO Cool! SET -kommandoen er en af de mere komplicerede og kraftfulde kommandoer i DOS ordbog.
Trin 6: IF Command - Alle er lige (1/2)
Den klassiske betingede operand. Grundlæggende, men kraftfuld alligevel. For dem, der aldrig har programmeret før, er IF-kommandoen præcis, hvordan den lyder. Hvis et udtryk i syntaksen viser sig at være sandt (eller IKKE sandt), vil den næste række af kommandoer blive udført. Den grundlæggende kommandolinje går sådan her:
IF%variable1%==%variable2%ECHO Denne del udføreseller hvis du har mere end én syntaks
@ECHO OFFIF%variable1%==%variable2%(ECHO Denne del udføres. ECHO Så er dette.) ELSE (ECHO Hvis variabel1 ikke & apost = variabel 2, sker dette. ECHO og dette sker også.)Bemærk: Den særegne placering af parenteser er ikke fordi jeg ikke tror på organiseret kode, men fordi hvis de ikke er på disse steder, fungerer hele IF -kodestykket ikke. Så hvis der er en fejl med din IF -kode, er det sandsynligvis på grund af parentesen. For at køre denne batch brugte jeg faktisk selve kommandoprompten, så jeg kunne indstille variablerne uden at skulle redigere IfVariableTest.bat -multiple gange.
Trin 7: IF Command - Men jeg er større end dig (2/2)
Ok, så du har en god IF -erklæring og alt, og at kontrollere, om variabler er ens eller ej, er rart og alt, men passer ikke helt til regningen. Jeg vil have noget til at ske, hvis variabel1 er mindre end den anden variabel! For os programmører ved jeg, at dette virker som en simpel opgave. Bare gør hvad alle andre programmeringssprog gør! Hold godt fast i dine heste cowboy. Ikke så hurtigt. En batchfil er ikke kun din normale programmeringssprog. Dumt som det kan virke fungerer "" ikke med Batch -filer.
EQU - Lige - == NEQ - Ikke ligeLSS - Mindre ThanGTR - Greater ThanLEQ - Mindre end eller lig ToGEQ - Større end eller lig medSæt bare disse operander i stedet for == eksemplet
IF 32 GTR 3 ECHO Dette virker
@ECHO OFFIF 32 GEQ 32 (ECHO 32 er større end eller lig med 32) ELSE (ECHO 32 er bestemt lig med 32) PAUSEIF 32 LSS 32 (ECHO 32 er mindre end 32? Jeg tror ikke.) ELSE (ECHO 32 er Ikke mindre end 32. Historiens slutning.) PAUSE
Trin 8: GOTO Command
GOTO -kommandoen. Den gør præcis, hvad den siger; den går til en etiket i batchfil -scriptet. For at bruge denne kommando skal du først have en etiket på plads. Etiketter ser sådan ud:
: Etiket 1Det er simpelthen et kolon før en række med bogstaver og/eller tal uden mellemrum. GOTO-kommandoen er struktureret sådan
GOTO Label 1Det er så let! Når jeg tænker på det, er jeg ikke rigtig sikker på, hvorfor jeg ikke lagde dette i lidt avanceret batch. Under alle omstændigheder kan denne kommando bruges til at gentage en batchfil ved simpelthen at GOTO en etiket, der udfører GOTO -kommandoen igen
@ECHO OFF: RepeatMeECHO Dette gentages, medmindre du trykker på "CTRL-C" GOTO RepeatMeBatchfilen taler i øvrigt sandheden. CTRL-C er den universelle pause og prompt for opsigelse. CTRL-S er simpelthen Pause. Men at lukke vinduet fungerer lige så godt. GOTO kan også springe over eller omorganisere din kode
GOTO TurnEOffGOTO MultipleGotoECHO Denne ECHO springes over.:MultipleGotoGOTO 3: ENDPAUSEEXIT: 1ECHO EndGOTO END: 3ECHO Dette vises førstGOTO 2: TurnEOff@ECHO OFFGOTO MultipleGoto: 2ECHO Dette er andet, selvom det 1Ovenstående kode blev struktureret forvirrende med vilje for at understrege GOTO's evne til at springe rundt i koden.
Trin 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 | tilføj: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (1/2) "src =" {{file.large_url | tilføj: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (1/2) "src =" {{file.large_url | tilføj: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (1/2) "src =" {{file.large_url | tilføj: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} "> Denne næste bit er ikke rigtig en 'kommando', men snarere en tilføjet syntaks til andre Det gør det, det tager Output af en bestemt kommando og kan skrive det ind i en tekstfil. Det er lettere at forklare, hvis du først ser det i aktion. Syntaksen er:
Kommando> FilnavnOk, så lad os sige, at vi er i et bestemt bibliotek. Vi bruger derefter DIR -kommandoen, som hvis du læser det grundlæggende i batch, ville du vide, at det viser indholdet af din nuværende bibliotek
C: / Brugere / Neo \> DIRNormalt ville output
Lydstyrke i drev C er HP Volume Serienummer er BC7E-E26C Directory over C: / Users / Neo2007-30-06 11:14.2007-30-06 11:14..2007-17-03 18:41.idlerc2007-19-02 15:14 Kontakter2007-19-06 22:44 Desktop2007-29-06 08:47 Dokumenter2007-19-06 10:35 Downloads2007-19-02 15:14 Favoritter02/19/ 2007 15:14 Links2007-12-05 16:01 Musik2007-30-06 01:20 Billeder2007-07-04 15:08 Gemte spil 2007-19-02 15:14 Søgninger2007-01-03 07:23 PM 242, 947 Testrekord. Wma2007-19-06 10:39 Videoer2007-18-06 09:57 1, 324, 574 wp_screenprint_mc.pdf2007-18-06 09:59 73, 996, 533 wp_tshirt_full.mp4 4 Fil (er) 75, 564, 054 bytes 14 Dir (s) 132, 927, 537, 152 bytes gratisMen hvis vi tilføjer> og til det
C: / Brugere / Neo / DIR> DIRContents.txtVi får ikke et output, men i stedet får vi en helt ny tekstfil ved navn DIRContents.txt, der har Output i den! Coolness! Men vent, der er et problem! Jeg vil gerne have flere output i den samme fil, men min> bliver ved med at overskrive den og ikke tilføje den! Hvad skal jeg gøre?
Trin 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 | tilføj: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (2/2) "src =" {{file.large_url | tilføj: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (2/2) "src =" {{file.large_url | tilføj: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (2/2) "src =" {{file.large_url | tilføj: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (2/2) "src =" {{file.large_url | tilføj: 'auto = webp & frame = 1 & height = 300' %} ">
Parameter (2/2) "src =" {{file.large_url | tilføj: 'auto = webp & frame = 1 & height = 300' %} "> Godt, jeg er glad for, at du spurgte. Det er det, >> parameteret er til! >> er ligesom>, men i stedet for fuldstændig at overskrive den angivne fil tilføjer vi den! Så lad os prøve det.
DIR >> DIRContents.txtPænt! Virkede perfekt! Så vent. Betyder det, at jeg kan skrive alt, hvad jeg vil, i en tekstfil? Jeg vil prøve det
Batch er fantastisk> Awesome.txtHvad? Hvorfor virkede det ikke? Det er fordi parameteren kun skriver output fra legitime kommandoer, ikke bare alt hvad du skriver i. Men, dette er et problem, der simpelthen er løst. Husk, at parametrene registrerer output af kommandoer. Hvilken kommando har et output, som vi kan kontrollere? ECHO -kommandoen
ECHO Batch er fantastisk> Awesome.txtECHO Jeg er så glad for, at jeg ved det. >> Awesome.txtYay! Husk. >> tilføjer Output til den næste linje i filen.
Trin 11: Eksempelimplementering
Okay. Så lad os lægge det hele sammen! Her er nogle eksempler på koder, jeg har lavet, der bruger de kommandoer, jeg har vist dig i denne instruktive. Denne kode tilføjer 1 til en variabel løbende og sender resultatet på ubestemt tid.
@ECHO OFFSET /a num = 1: GentagECHO%num%SET /a num =%num%+1GOTO GentagDenne kode starter CMD.exe 5 gange
@ECHO OFFSET /a RepeatNum = 5: OpenIF%RepeatNum%== 0 GOTO EndSTART CMD.exeSET /a RepeatNum =%RepeatNum%-1GOTO Åben: SlutDenne kode opretter en batchfil i C: / Users / Neo og kører den
@ECHO OFFCHDIR C: / Users / NeoECHO @ECHO OFF> Hello.batECHO ECHO Hello! >> Hello.batECHO ECHO I & aposm i dit C Drive! >> Hello.batECHO PAUSE >> Hello.batC: / Users / Neo / Hello. batPauseDette er en lille game batch. Du skal gætte tallet
@ECHO OFFSET /a GuessNum = 0SET /a Answer =%RANDOM%ECHO Gæt hvad jeg tænker på.:RetrySET /p Gæt = IF%Gæt%LSS%Svar%ECHO Mit nummer er højere. IF%Gæt%GTR%Svar %ECHO Mit nummer er lavere. IF%Gæt%==%Svar%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO Prøv igen: ENDECHO Du har ret! Svaret var %Svar %ECHO Det tog %GuessNum %Guesses. ECHO. PAUSEOg denne kan jeg meget lide. Hvis du ikke er forsigtig, kan det dog hurtigt gå ud af hånden afhængigt af din computers evne. Hvad denne fil gør, er at den på ubestemt tid opretter nummererede tekstfiler i et bibliotek kaldet lolnumbers. Hver af disse tekstfiler indeholder DIR for lolnumbers -biblioteket. Sagen er, at biblioteket konstant bliver fyldigere og fyldigere med tekstfiler, så hver på hinanden følgende tekstfil er større end den sidste. Resultatet af dette er en mappe, hvis samlede størrelse bliver større og større hvert sekund
@ECHO OFFSET /a num = 1MKDIR lolnumbersCD lolnumbers: RestartDIR>%num%.txtSET /a num+= 1GOTO GenstartDet er temmelig grundlæggende koder. Eksperimenter med dem til dit hjerte.
Trin 12: Konklusion: Endelige noter
Puha. Vi dækkede en masse i denne instruktive. Denne er faktisk 3 gange længere end min sidste. Jeg håber, at du vil nyde det! Bare et par påmindelser, før jeg går. Husk: Når du indstiller en variabel, må du aldrig sætte et mellemrum mellem variablen og dens værdi. JA:
SET variabel1 = værdiDen ekstra plads får din variabel til at være blank. NO
SET variabel1 = værdiOgså de flere IF'er. Husk at formatere Parentesen korrekt: JA
HVIS 1 == 1 (ECHO One Equals One!) ELSE (ECHO Noget og kan være forkert med dette program.)INGEN
HVIS 1 == 1 (ECHO One Equals One!) ELSE (ECHO Noget og kan være forkert med dette program.)Der er også indbyggede variabler
%CD %% DATE %% TIME %% RANDOM%% CD% Udvides til det aktuelle bibliotek. Grundlæggende er stien bag den første>% DATE% og% TIME% Dato og tid.% RANDOM% giver et tilfældigt tal mellem 0 og 32767. Intervallet kan ikke ændres, jeg tror ikke. Og det er i bund og grund det! Jeg håber, at du nød dette instruerbare, jeg arbejdede virkelig hårdt med det. Forhåbentlig vil det udgøre 10 måneders fravær. Nu de dårlige nyheder. Jeg vil have lidt problemer med at besvare eventuelle spørgsmål i de næste par måneder, fordi jeg er ude af landet. Men hvis du har et spørgsmål, skal du bare efterlade en kommentar hvem som helst. Hvis jeg får adgang til en computer, vil jeg helt sikkert svare, men jeg tror ikke, det er nødvendigt; Instructables er et venligt fællesskab, og jeg er sikker på, at nogen derude vil hjælpe dig i din situation.
Anbefalede:
Avanceret linje efter robot: 22 trin (med billeder)
Avanceret linje efter robot: Dette er en avanceret linje efter robot baseret på Teensy 3.6 og QTRX linjesensor, som jeg har bygget og har arbejdet på i et stykke tid. Der er nogle store forbedringer i design og ydeevne fra min tidligere linje efter robot. T
Eksperimenter i avanceret datalogning (ved hjælp af Python): 11 trin
Eksperimenter i avanceret datalogning (ved hjælp af Python): Der er mange datalogningsinstruktioner, så da jeg ville bygge et eget logningsprojekt, kiggede jeg rundt på en flok. Nogle var gode, nogle ikke så meget, så jeg besluttede at tage nogle af de bedre ideer og lave min egen ansøgning. Denne resu
D4E1 Venstrehåndet kamerahjælp. Avanceret version .: 7 trin
D4E1 Venstrehåndet kamerahjælp. Avanceret version .: I 2012 designede Annelies Rollez, Cesar Vandevelde og Justin Couturon et kameragrej til venstre for Barts (Grimonprez) digitalkamera. Vi gennemgik designet og parametriserede det, så det kan laves i en fleksibel produktionsproces. På denne måde kan venstre
Avanceret model Rocket Flight Computer !: 4 trin (med billeder)
Avanceret Model Rocket Flight Computer !: Jeg havde brug for en avanceret model raketflycomputer til min nyeste raket, der kontrollerede sig selv uden finner! Så jeg byggede min egen! Grunden til, at jeg besluttede at bygge dette, var fordi jeg konstruerede TVC (stødvektorstyring) raketter. Det betyder, at der
Avanceret LED -vedhæng: 4 trin
Avanceret LED -vedhæng: I denne instruktive vil jeg vise dig, hvordan du kan lave dit eget LED -vedhæng. Du bør kontrollere mit tidligere LED -vedhæng, der kan instrueres, jeg viser nogle gode tips der. Er smykker en del af skønheden? Det finder vi ud af