Innholdsfortegnelse:

Avansert sats: 12 trinn
Avansert sats: 12 trinn

Video: Avansert sats: 12 trinn

Video: Avansert sats: 12 trinn
Video: Полный курс по Next js - Изучи Nextjs за 2 часа! | React SSR +таймкоды 2024, Juli
Anonim

men det er ok, bare bruk CD- eller CHDIR -kommandoen for å endre katalog. Men det spiller egentlig ingen rolle i dette tilfellet. "," Topp ": 0.08480565371024736," venstre ": 0.014285714285714285," høyde ": 0.8586572438162544," bredde ": 0.9357142857142857}]">

Avansert batch
Avansert batch
Avansert batch
Avansert batch
Avansert batch
Avansert batch

VENNLIGST STILLE SPØRSMÅL DU KAN HA TIL MIN BLOGG: https://tamsanh.com/blog/2008/07/11/batch-tutorial-3-advanced-batch/Jeg besøker ikke instruktører lenger, og du får en raskere svar på den måten. hei gutter! Tam Nguyen her. Det har vært lenge siden, men det er her nå! Jeg presenterer den neste delen av mine batchopplæringer! Du kan (eller kanskje ikke) ha lest mine andre instrukser: Basics of BatchSlyly More Advanded Batch Denne instruksjonsfilen låner noen elementer fra de to første instruksjonene. Nemlig: ECHO CommandCD CommandDIR CommandIf du ikke har lest de to andre, foreslår jeg at du ser over disse kommandoene med en gang. Jeg venter her. Ok! På slutten av denne instruksjonsboken vil du være intim med: START CommandSET CommandIF CommandGOTO Commandand> og >> Parameters Med disse kommandoene vil du kunne lage dynamiske batchfiler som kan endres i henhold til brukerinngang, og opprett og utvid. Så la oss åpne den gode kommandoprompten og komme i gang! Kjør-> cmd Alternativt kan du gå til: Start-> Programfiler-> Tilbehør-> Kommandoprompt Mine forklaringer i denne instruksjonsboken ble litt lange, så jeg har delt opp noen kommandoer i mer enn én side hovedsakelig for estetiske formål; Jeg likte å se bildene mens jeg leste teksten uten å måtte rulle opp og ned. Tommelfingerregel for visning av bilder; Vanligvis etter hvert kodebit, er det et bilde. Nyt!

Trinn 1: START -kommando

START -kommando
START -kommando
START -kommando
START -kommando
START -kommando
START -kommando
START -kommando
START -kommando

START -kommandoen er en fin liten kommando som starter ting! Det er en enkel kommando, og vil hjelpe oss å varme opp før vi kommer til de vanskeligere kommandoene. Parametrene til kommandoen er akkurat det du tror de er.

START ThingToBeStarted.exeGanske enkelt

START WMPlayer.exeIkke bare kan du STARTE.exe, du kan også skrive inn et nettsted, og det åpnes i standardleseren

START www. Instructables.comGanske enkelt, ikke sant? Ok. La oss nå gå videre til det virkelige kjøttet til Instructable: SET Command.

Trinn 2: SET Kommando - strengteori (1/4)

SET Kommando - strengteori (1/4)
SET Kommando - strengteori (1/4)
SET Kommando - strengteori (1/4)
SET Kommando - strengteori (1/4)

SET -kommandoen: Variable Definer. Ah. Variabler. Utviklerens ambrosia. Variabler er biter av minne som er… err, variable. Ingen IFS eller NOTS om det! (lol, beklager). Ok! Så hvordan fungerer denne babyen? Svært enkelt er parameterne for SET -kommandoen: SET VariableName = Variable ValueSET i seg selv vil opprette strengvariabler.

SET TestVS = Test variabel streng!I dette tilfellet lagret vi bare verdien "Test variabel streng!" inn i variabelen TestVS. Vel, det er moro og spill, men hvordan henter vi variabelverdien? Vi bruker %. Bare legg til % rundt variabelnavnet

ECHO %TestVS %Ok kult, men hva annet kan det gjøre?

Trinn 3: SET Command - Mr. Math (2/4)

SET Command - Mr. Math (2/4)
SET Command - Mr. Math (2/4)
SET Command - Mr. Math (2/4)
SET Command - Mr. Math (2/4)
SET Command - Mr. Math (2/4)
SET Command - Mr. Math (2/4)

Kan den regne? La oss lage en enkel batch for å teste den ut.

@ECHO OFFSET Test = 1ECHO%Test%SET Test =%Test%-1ECHO%Test%PAUSEWow, hva skjedde? Det burde ha fungert! Vent litt … hva var det med SET -kommandoer som bare lagde strenger? Ja. SET -kommandoen i seg selv vil bare opprette en strengvariabel, noe som betyr at den vil skape den mest bokstavelige tolkningen av verdien. Den tenker ikke på at "1 - 1" tilsvarer "0", den tenker på "1 - 1" som tilsvarer "1 - 1." Så hvordan endrer vi det? Vi vil at variabelen ikke skal kopieres direkte, men evalueres. Dette betyr at vi ønsker å gjøre det fra en streng til et uttrykk! En veldig enkel endring, bare legg til a /a til SET -kommandoen. Her er en enkel batchfil for å se den i aksjon, eller du kan bare skrive den inn i kommandopromptmanualen. Jeg foreslår det siste; det er mye raskere, og koden er ikke for komplisert, men hvis du virkelig vil ha batchfilen, er den her

@ECHO OFFSET /a Test = 2+2ECHO %Test %PAUSEFantastisk! Det uttrykte det perfekt. Nå vet vi hvilke endringer som må gjøres i vår matematiske test. Bat

@ECHO OFFSET /a Test = 1ECHO%Test%SET /a Test =%Test%-1ECHO%Test%PAUSEOk. Så la oss kjøre det! Flott! Det fungerte perfekt! Men hva neste?

Trinn 4: SET -kommando - brukerinngang (3/4)

SET -kommando - brukerinngang (3/4)
SET -kommando - brukerinngang (3/4)
SET -kommando - brukerinngang (3/4)
SET -kommando - brukerinngang (3/4)
SET -kommando - brukerinngang (3/4)
SET -kommando - brukerinngang (3/4)

SET har også muligheten til å be brukeren om input. Ved å legge til /p i SET-parameterne, forvandler det det fra en normal variabel setter til en brukerstyrt variabel setter.

SET /p UDefine =Med /p stopper programmet faktisk og venter på brukerens innspill. Men vent, jeg ser ikke a /a parameter, betyr det at variabelen bare er en streng? Vel, liksom. Parameteren /p negerer /a fullstendig, og hvis du prøver det får du ganske enkelt en manglende operandfeil. Dette betyr at den brukerdefinerte variabelen ikke vil være i stand til å evaluere uttrykk. Så hva kan man gjøre? Vel, her er et vanskelig triks som jeg tenkte på som vi kan bruke. SET -kommandoen gjør ikke all samtidig bruk av parametere /p og /a, ikke sant? Hva med sekvensiell bruk av parameterne /a og /p? Ahhh … dine lure støvler

@ECHO OFFECHO Kalkulator Versjon 1.0ECHO. SET /p UDefine = SET /a UDefine =%UDefine%ECHO = ECHO%UDefine%ECHO. PAUSEFin kalkulator du har kommet dit. Hvis du ikke har funnet ut av det nå, er {{{ECHO.}}} En tom linje. Er det ikke kult?

Trinn 5: SET Command - More Than Meets Eye (4/4)

SET Command - More Than Meets Eye (4/4)
SET Command - More Than Meets Eye (4/4)
SET Command - More Than Meets Eye (4/4)
SET Command - More Than Meets Eye (4/4)
SET Command - More Than Meets Eye (4/4)
SET Command - More Than Meets Eye (4/4)

På dette tidspunktet kan det virke som om variablene i SET -kommandoen bare er bra for strenger og uttrykk. Ikke sant. Variablene er faktisk veldig veldig fleksible, og er ikke bare begrenset til ECHO. Har du prøvd å skrive inn en variabel alene?

SET Test = Instructables%Test%For en merkelig feil … det står at kommandoen "Instructables" ikke gjenkjennes, ikke at % Test % ikke hadde noen syntaks. Så det betyr at DOS behandler hver variabel som den ble skrevet for hånd. Vel, hva om

SET Test = START cmd.exe%Test%Rått! Det fungerte! DOS behandler hver variabel som den ble skrevet av brukeren, og kjører den deretter. Her er en interessant kode: (Bare kopier/lim inn; det er litt kjedelig.

@ECHO OffSET Variable1 = ECSET Variable2 = HSET Variable3 = O CSET Variable4 = ooSET Variable5 = l! ECHO%Variable1 %% Variable2 %% Variable3 %% Variable4 %% Variable5%ECHO.%Variable1 %% Variable2 %% Variable3 %% Variable4% %Variabel5%PauseEr det ikke pent? Hver variabel inneholder to bokstaver i hele meldingen (unntatt Variabel2), og ved å sette variablene i rekkefølge legger hver bokstav til og fullfører hele kommandoen til ECHO Cool! SET -kommandoen er en av de mer kompliserte og kraftfulle kommandoene til DOS ordbok.

Trinn 6: IF Command - Alle er like (1/2)

IF Command - Alle er like (1/2)
IF Command - Alle er like (1/2)
IF Command - Alle er like (1/2)
IF Command - Alle er like (1/2)
IF Command - Alle er like (1/2)
IF Command - Alle er like (1/2)

Den klassiske betingede operanden. Grunnleggende, men kraftig uansett. For de som aldri har programmert før, er IF-kommandoen akkurat slik den høres ut. Hvis et uttrykk i syntaksen viser seg å være sant (eller IKKE sant), vil den neste sekvensen av kommandoer utføre. Den grunnleggende kommandolinjen går slik:

IF%variable1%==%variable2%ECHO Denne delen utføreseller hvis du har mer enn én syntaks

@ECHO OFFIF%variable1%==%variable2%(ECHO Denne delen er utført. ECHO Så er dette.) ELSE (ECHO Hvis variabel1 ikke & apost = variabel 2, skjer dette. ECHO og dette skjer også.)Merk: Den særegne plasseringen av parentes er ikke fordi jeg ikke tror på organisert kode, men fordi hvis de ikke er på disse stedene, vil ikke hele IF -kodebiten fungere. Så hvis det er en feil med IF -koden, er det mest sannsynlig på grunn av parentesen. For å kjøre denne batchen brukte jeg faktisk selve kommandoprompten, slik at jeg kunne angi variablene uten å måtte redigere IfVariableTest.bat -multiple ganger.

Trinn 7: 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)
IF Command - But I'm Greater Than You (2/2)

Ok, så du har en fin IF -setning og alt, og å sjekke om variabler er like eller ikke er fint og alt, men det stemmer ikke helt. Jeg vil at noe skal skje hvis variabel 1 er mindre enn den andre variabelen! For de av oss programmerere vet jeg at dette virker som en enkel oppgave. Bare gjør det som alle andre programmeringsspråk gjør! Hold hestene dine cowboy. Ikke så fort. En batchfil er ikke bare din vanlige programmeringsspråk. Dumt som det kan virke, fungerer ikke "" med batch -filer.

EQU - Equal - == NEQ - Not EqualLSS - Less ThanGTR - Greater ThanLEQ - Less Than or Equal ToGEQ - Greater Than or Equal ToBare sett disse operandene i stedet for == eksempelet

IF 32 GTR 3 ECHO Dette vil fungere

@ECHO OFFIF 32 GEQ 32 (ECHO 32 er større enn, eller lik 32) ELSE (ECHO 32 er definitivt lik 32) PAUSEIF 32 LSS 32 (ECHO 32 er mindre enn 32? Jeg tror ikke.) ELSE (ECHO 32 er Ikke mindre enn 32. Historiens slutt.) PAUSE

Trinn 8: GOTO Command

GOTO Command
GOTO Command
GOTO Command
GOTO Command
GOTO Command
GOTO Command

GOTO -kommandoen. Den gjør akkurat det den sier; den går til en etikett i batchfilskriptet. For å bruke denne kommandoen må du først ha en etikett på plass. Etiketter ser slik ut:

: Etikett 1Det er ganske enkelt et kolon før en serie med bokstaver og/eller tall som ikke er mellomrom. GOTO-kommandoen er strukturert slik

GOTO Label 1Det er så enkelt! Når du tenker på det, er jeg ikke helt sikker på hvorfor jeg ikke la dette i litt avansert batch. Uansett kan denne kommandoen brukes til å gjenta en batchfil ved ganske enkelt å GOTO en etikett som utfører GOTO -kommandoen igjen

@ECHO OFF: RepeatMeECHO Dette vil gjentas med mindre du trykker på "CTRL-C" GOTO RepeatMeBatchfilen snakker forresten sannheten. CTRL-C er den universelle Pause og melding om avslutning. CTRL-S er ganske enkelt Pause. Men å lukke vinduet fungerer like bra. GOTO kan hoppe over, eller omorganisere koden din også

GOTO TurnEOffGOTO MultipleGotoECHO Denne ECHO kommer til å bli hoppet over.: MultipleGotoGOTO 3: ENDPAUSEEXIT: 1ECHO EndGOTO END: 3ECHO Dette vises førstGOTO 2: TurnEOff@ECHO OFFGOTO MultipleGoto: 2ECHO Dette er andre, selv om det er 1Koden ovenfor ble strukturert forvirrende med vilje for å understreke GOTOs evne til å hoppe rundt i koden.

Trinn 9:> Parameter (1/2)

Eksempel Implementering
Eksempel Implementering

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

Eksempel Implementering
Eksempel Implementering

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

Eksempel Implementering
Eksempel Implementering

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

Konklusjon: Sluttnotater
Konklusjon: Sluttnotater

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' %} "> Denne neste biten er egentlig ikke en 'kommando', men snarere en ekstra syntaks til andre Det den gjør er at den tar utmatingen av en bestemt kommando, og kan skrive den inn i en tekstfil. Det er lettere å forklare hvis du ser den i aksjon først. Sin syntaks er:

Kommando> FilnavnOk, så la oss si at vi er i en bestemt katalog. Vi bruker deretter DIR -kommandoen, som hvis du leser det grunnleggende om batch, vil vite at det viser innholdet i din nåværende katalog

C: / Users / Neo \> DIRVille normalt sett ut

Volum i stasjon C er HP Volum Serienummer er BC7E-E26C Directory of 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 Nedlastinger2007-19-02 15:14 Favoritter02/19/ 2007 15:14 Lenker 2007-12-05 16:01 Musikk 2007-30-06 01:20 Bilder 2007-07-04 15:08 Lagrede spill 2007-19-02 15:14 Søk 2007-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 byte 14 Dir (s) 132, 927, 537, 152 byte gratisMen hvis vi legger til> og til den

C: / Users / Neo / DIR> DIRContents.txtVi får ikke utdata, men i stedet får vi en splitter ny tekstfil som heter DIRContents.txt som har utdata i den! Coolness! Men vent, det er et problem! Jeg vil ha flere utdata i den samme filen, men min> fortsetter å overskrive den, og ikke legge den til! Hva gjør jeg?

Trinn 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' %} "> Vel, jeg er glad du spurte. Det er det >> parameteren er til for! >> er akkurat som>, men i stedet for å overskrive den angitte filen helt, legger vi til den! Så la oss prøve den.

DIR >> DIRContents.txtRyddig! Fungerte perfekt! Så vent. Betyr det at jeg kan skrive alt jeg vil i en tekstfil? Jeg vil prøve det

Batch Is Awesome> Awesome.txtHva? Hvorfor fungerte det ikke? Det er fordi parameteren bare skriver utdataene fra legitime kommandoer, ikke bare alt du skriver inn. Men, dette er et problem som rett og slett er løst. Husk at parameterne registrerer utdataene for kommandoer. Hvilken kommando har en utgang som vi kan kontrollere? ECHO -kommandoen

ECHO Batch Is Awesome> Awesome.txtECHO Jeg er så glad for at jeg vet det. >> Awesome.txtJippi! Huske. >> legger utdata til neste linje i filen.

Trinn 11: Eksempelimplementering

Ok. Så la oss sette alt sammen! Her er noen eksempler på koder jeg har laget som bruker kommandoene jeg har vist deg i denne instruksjonsboken. Denne koden vil legge til 1 til en variabel kontinuerlig og levere resultatet på ubestemt tid.

@ECHO OFFSET /a num = 1: RepeatECHO%num%SET /a num =%num%+1GOTO RepeatDenne koden starter CMD.exe 5 ganger

@ECHO OFFSET /a RepeatNum = 5: OpenIF%RepeatNum%== 0 GOTO EndSTART CMD.exeSET /a RepeatNum =%RepeatNum%-1GOTO Open: EndDenne koden vil opprette en batchfil i C: / Users / Neo og kjøre den

@ECHO OFFCHDIR C: / Users / NeoECHO @ECHO OFF> Hello.batECHO ECHO Hello! >> Hello.batECHO ECHO I & aposm in C Drive! >> Hello.batECHO PAUSE >> Hello.batC: / Users / Neo / Hello. batPauseDette er en liten spillbatch. Du må gjette tallet

@ECHO OFFSET /a GuessNum = 0SET /a Answer =%RANDOM%ECHO Gjett hva jeg tenker på.:RetrySET /p Gjett = IF%Gjett%LSS%Svar%ECHO Mitt tall er høyere. IF%Gjett%GTR%svar %ECHO Mitt nummer er lavere. IF%Gjett%==%Svar%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO Prøv på nytt: ENDECHO Du har rett! Svaret var %Answer %ECHO Det tok %GuessNum %Guesses. ECHO. PAUSEOg denne liker jeg veldig godt. Hvis du ikke er forsiktig, kan det imidlertid gå ut av kontroll ganske raskt, avhengig av datamaskinens evne. Hva denne filen gjør er at den på ubestemt tid lager nummererte tekstfiler i en katalog som kalles lolnumbers. Hver av disse tekstfilene inneholder DIR for lolnumbers -katalogen. Saken er at katalogen stadig blir fyldigere og fyldigere med tekstfiler, så hver påfølgende tekstfil er større enn den forrige. Resultatet av dette er en mappe hvis totale størrelse blir større og større for hvert sekund

@ECHO OFFSET /a num = 1MKDIR lolnumbersCD lolnumbers: RestartDIR>%num%.txtSET /a num+= 1GOTO Start på nyttDette er ganske grunnleggende koder. Eksperimenter med dem til ditt hjerte.

Trinn 12: Konklusjon: Sluttnotater

Puh. Vi dekket mye i dette instruerbare. Denne er faktisk 3 ganger lengre enn min forrige. Jeg håper du vil like det! Bare noen få påminnelser før jeg drar. Husk: Når du setter en variabel, må du aldri sette et mellomrom mellom variabelen og dens verdi. JA:

SET variabel1 = verdiDen ekstra plassen vil føre til at variabelen din er tom

SET variabel1 = verdiOgså flere IF -er. Husk å formatere parentesen riktig: JA

HVIS 1 == 1 (ECHO One Equals One!) ELSE (ECHO Something & aposs wrong with this program.)NEI

HVIS 1 == 1 (ECHO One Equals One!) ELSE (ECHO Noe og kan være feil med dette programmet.)Det er også innebygde variabler

%CD %% DATE %% TIME %% RANDOM%% CD% Utvides til gjeldende katalog. I utgangspunktet er banen bak den første>% DATE% og% TIME% Dato og klokkeslett.% RANDOM% gir et tilfeldig tall mellom 0 og 32767. Området kan ikke endres, tror jeg ikke. Og det er i utgangspunktet det! Jeg håper du likte dette instruerbare, jeg jobbet veldig hardt med det. Forhåpentligvis vil det gjøre opp for 10 måneders fravær. Nå de dårlige nyhetene. Jeg vil ha litt problemer med å svare på spørsmål i løpet av de neste månedene, fordi jeg kommer til å være utenlands. Men hvis du har et spørsmål, er det bare å legge igjen en kommentar hvem som helst. Hvis jeg får tilgang til en datamaskin, svarer jeg sikkert, men jeg tror ikke det vil være nødvendig. Instructables er et vennlig fellesskap, og jeg er sikker på at noen der ute vil hjelpe deg i din vanskelige situasjon.

Anbefalt: