Innehållsförteckning:

Avancerad sats: 12 steg
Avancerad sats: 12 steg

Video: Avancerad sats: 12 steg

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

men det är ok, använd bara kommandot CD eller CHDIR för att ändra katalog. Men det spelar egentligen ingen roll i det här fallet. "," Topp ": 0.08480565371024736," vänster ": 0.014285714285714285," höjd ": 0.8586572438162544," bredd ": 0.9357142857142857}]">

Avancerad sats
Avancerad sats
Avancerad sats
Avancerad sats
Avancerad sats
Avancerad sats

VÄNLIGEN RIKTIGA FRÅGOR DU KAN HA TILL MIN BLOGG: https://tamsanh.com/blog/2008/07/11/batch-tutorial-3-advanced-batch/Jag besöker inte instruktörer längre, så får du en snabbare svar på det sättet. Hej killar! Tam Nguyen här. Det har gått länge, men det är här nu! Jag presenterar för dig nästa del av mina Batch Tutorials! Du kanske (eller kanske inte) har läst mina andra instruktioner: Basics of BatchSlyly More Advanded Batch This Instructable lånar några element från de två första instruktionerna. Nämligen: ECHO CommandCD CommandDIR CommandOm du inte har läst de två andra föreslår jag att du tittar över dessa kommandon direkt. Jag väntar här. Ok! I slutet av denna instruktionsbok kommer du att vara intim med: START KommandoSET Kommando-g.webp

Steg 1: START -kommando

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

START -kommandot är ett trevligt litet kommando som startar saker! Det är ett enkelt kommando som hjälper oss att värma upp innan vi kommer till de hårdare kommandona. Parametrarna för kommandot är exakt vad du tror att de är.

STARTA ThingToBeStarted.exeGanska enkelt

STARTA WMPlayer.exeDu kan inte bara STARTA.exe, du kan också skriva in en webbplats så öppnas den i din standardwebbläsare

STARTA www. Instructables.comGanska lätt, va? Ok. Låt oss nu gå vidare till det riktiga köttet i Instructable: SET -kommandot.

Steg 2: SET -kommando - strängteori (1/4)

SET -kommando - strängteori (1/4)
SET -kommando - strängteori (1/4)
SET -kommando - strängteori (1/4)
SET -kommando - strängteori (1/4)

SET -kommandot: Variable Definer. Ah. Variabler. Utvecklarens ambrosia. Variabler är bitar av minne som är … err, variabel. Inga IFS OCH INTE om det! (lol, förlåt). Ok! Så hur fungerar det här barnet? Mycket enkelt är parametrarna för SET -kommandot: SET VariableName = Variable ValueSET i sig kommer att skapa strängvariabler.

SET TestVS = Testvariabel sträng!I det här fallet lagrade vi precis värdet "Testvariabelsträng!" in i variabeln TestVS. Tja det är allt roligt och spel, men hur hämtar vi variabelvärdet? Vi använder %. Lägg bara till % runt variabelnamnet

ECHO %TestVS %Ok kul, men vad mer kan det göra?

Steg 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 det göra matte? Låt oss göra en enkel sats för att testa den.

@ECHO OFFSET Test = 1ECHO%Test%SET Test =%Test%-1ECHO%Test%PAUSEOj, vad hände? Det borde ha fungerat! Vänta lite … vad var det med SET -kommandon som bara gjorde strängar? Ja. SET -kommandot i sig kommer bara att skapa en strängvariabel, vilket innebär att det skapar den mest bokstavliga tolkningen av värdet. Det tänker inte på att "1 - 1" motsvarar "0", det tänker på "1 - 1" som motsvarar "1 - 1." Så hur ändrar vi det? Vi vill att variabeln inte ska kopieras direkt utan utvärderas. Det betyder att vi vill göra det från en sträng till ett uttryck! En mycket enkel ändring, helt enkelt lägga till a /a till SET -kommandot. Här är en enkel batchfil för att se den i handling, eller så kan du bara skriva den i kommandotolksmanualen. Jag föreslår det senare; det är mycket snabbare, och koden är inte för komplicerad, men om du verkligen vill ha batchfilen, här är den

@ECHO OFFSET /a Test = 2+2ECHO %Test %PAUSEFantastisk! Det uttryckte det perfekt. Nu vet vi vilka ändringar som behöver göras i vårt matematiska test.bat

@ECHO OFFSET /a Test = 1ECHO%Test%SET /a Test =%Test%-1ECHO%Test%PAUSEOk. Så låt oss köra det! Fantastiskt! Det fungerade perfekt! Men vad händer sedan?

Steg 4: SET -kommando - Användarinmatning (3/4)

SET -kommando - Användarinmatning (3/4)
SET -kommando - Användarinmatning (3/4)
SET -kommando - Användarinmatning (3/4)
SET -kommando - Användarinmatning (3/4)
SET -kommando - Användarinmatning (3/4)
SET -kommando - Användarinmatning (3/4)

SET har också förmågan att uppmana användaren att mata in. Genom att lägga till /p i SET-parametrarna omvandlas den från en normal variabel-setter till en användarkontrollerad variabel-setter.

SET /p UDefine =Med /p pausar programmet faktiskt och väntar på användarens inmatning. Men vänta, jag ser inte a /a parameter, betyder det att variabeln bara är en sträng? Tja, typ. Parametrarnas /p negerar helt /a, och om du försöker får du helt enkelt ett felande operandfel. Detta betyder att den användardefinierade variabeln inte kommer att kunna utvärdera uttryck. Så vad kan man göra? Tja, här är ett knepigt trick som jag tänkte på som vi kan använda. SET -kommandot gör inte all samtidig användning av parametrar /p och /a, eller hur? Tja, hur är det med sekventiell användning av parametrarna /a och /p? Ahhh … dina listiga stövlar

@ECHO OFFECHO Calculator Version 1.0ECHO. SET /p UDefine = SET /a UDefine =%UDefine%ECHO = ECHO%UDefine%ECHO. PAUSETrevlig miniräknare du kom dit. Om du inte har förstått det nu är {{{ECHO.}}} En tom rad. Är det inte coolt?

Steg 5: SET -kommando - mer än möter ögat (4/4)

SET -kommando - mer än möter ögat (4/4)
SET -kommando - mer än möter ögat (4/4)
SET -kommando - mer än möter ögat (4/4)
SET -kommando - mer än möter ögat (4/4)
SET -kommando - mer än möter ögat (4/4)
SET -kommando - mer än möter ögat (4/4)

Vid denna tidpunkt kan det tyckas att variablerna i SET -kommandot endast är bra för strängar och uttryck. Inte sant. Variablerna är faktiskt väldigt flexibla och är inte bara begränsade till ECHO. Har du försökt att skriva en variabel i sig själv?

SET Test = Instructables%Test%Vilket konstigt fel … det säger att kommandot "Instructables" inte känns igen, inte att % Test % inte hade någon syntax. Så det betyder att DOS behandlar varje variabel som att den skrevs för hand. Tja, tänk om

SET Test = START cmd.exe%Test%Grymt bra! Det fungerade! DOS behandlar varje variabel som om den skrevs av användaren och kör den därefter. Här är en intressant kod: (Bara kopiera/klistra in; det är lite tråkigt.

@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%PausÄr det inte snyggt? Varje variabel innehåller två bokstäver i hela meddelandet (utom Variable2), och för att placera variablerna i ordning lägger varje bokstav till och avslutar hela kommandot för ECHO Cool! SET -kommandot är ett av de mer komplicerade och kraftfulla kommandona för DOS -ordbok.

Steg 6: IF Command - Alla är lika (1/2)

IF Command - Alla är lika (1/2)
IF Command - Alla är lika (1/2)
IF Command - Alla är lika (1/2)
IF Command - Alla är lika (1/2)
IF Command - Alla är lika (1/2)
IF Command - Alla är lika (1/2)

Den där klassiska villkorliga operanden. Grundläggande, men kraftfullt i alla fall. För dem som aldrig har programmerat tidigare är IF-kommandot exakt hur det låter. Om ett uttryck i syntaxen visar sig vara sant (eller INTE sant) kommer nästa kommandosekvens att utföras. Den grundläggande kommandoraden går så här:

IF%variable1%==%variable2%ECHO Denna del körseller om du har mer än en syntax

@ECHO OFFIF%variable1%==%variable2%(ECHO Denna del körs. ECHO Så är det här.) ELSE (ECHO Om variabel 1 inte & apost = variabel 2 händer detta. ECHO och detta händer också.)Obs: Den speciella placeringen av parentes är inte för att jag inte tror på organiserad kod, utan för att om de inte finns på dessa platser fungerar inte hela IF -kodavsnittet. Således, om det finns något fel med din IF -kod, är det troligtvis på grund av parentesen. För att köra den här batchen använde jag faktiskt själva kommandotolken så att jag kunde ställa in variablerna utan att behöva redigera IfVariableTest.bat -multipeln gånger.

Steg 7: IF Command - Men jag är större än du (2/2)

IF Command - Men jag är större än dig (2/2)
IF Command - Men jag är större än dig (2/2)
IF Command - Men jag är större än dig (2/2)
IF Command - Men jag är större än dig (2/2)
IF Command - Men jag är större än dig (2/2)
IF Command - Men jag är större än dig (2/2)

Ok, så du har ett bra IF -uttalande och allt, och att kontrollera om variabler är lika eller inte är trevligt och allt, men passar inte riktigt. Jag vill att något ska hända om variabel 1 är mindre än den andra variabeln! För oss programmerare vet jag att detta verkar vara en enkel uppgift. Gör bara vad alla andra programmeringsspråk gör! Håll väl dina hästar cowboy. Inte så snabbt. En batchfil är inte bara din vanliga programmeringsspråk. Dumt som det kan tyckas fungerar inte "" med Batch -filer.

EQU - Equal - == NEQ - Not EqualLSS - Less ThanGTR - Greater ThanLEQ - Less Than or Equal ToGEQ - Greater Than or Equal ToSätt bara dessa operander i stället för == exemplet

IF 32 GTR 3 ECHO Detta kommer att fungera

@ECHO OFFIF 32 GEQ 32 (ECHO 32 är större än, eller lika med 32) ELSE (ECHO 32 är definitivt lika med 32) PAUSEIF 32 LSS 32 (ECHO 32 är mindre än 32? Jag tror inte.) ELSE (ECHO 32 är Inte mindre än 32. Historiens slut.) PAUSE

Steg 8: GOTO Command

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

GOTO -kommandot. Den gör precis vad den säger; det GÅR TILL en etikett i batchfilskriptet. För att använda det här kommandot måste du först ha en etikett på plats. Etiketter ser ut så här:

: Etikett 1Det är helt enkelt ett kolon före en serie med bokstäver och/eller siffror utan mellanrum. GOTO-kommandot är uppbyggt så här

GOTO -etikett 1Det är så enkelt! Kommer att tänka på det, jag är inte riktigt säker på varför jag inte lade detta i Slightly Advanced Batch. I alla fall kan det här kommandot användas för att upprepa en batchfil genom att helt enkelt GOTO en etikett som kör GOTO -kommandot igen

@ECHO OFF: RepeatMeECHO Detta kommer att upprepas om du inte trycker på "CTRL-C" GOTO RepeatMeBatchfilen talar förresten sanning. CTRL-C är den universella pausen och prompten för uppsägning. CTRL-S är helt enkelt Paus. Men att stänga fönstret fungerar lika bra. GOTO kan hoppa över eller ordna om din kod också

GOTO TurnEOffGOTO MultipleGotoECHO Denna ECHO kommer att hoppas över.:MultipleGotoGOTO 3: ENDPAUSEEXIT: 1ECHO EndGOTO END: 3ECHO Detta kommer att visas förstGOTO 2: TurnEOff@ECHO OFFGOTO MultipleGoto: 2ECHO Detta är andra, även om det & andra 1Ovanstående kod var strukturerat förvirrande avsiktligt för att betona GOTO: s förmåga att hoppa runt i koden.

Steg 9:> Parameter (1/2)

Exempel Implementering
Exempel Implementering

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

Exempel Implementering
Exempel Implementering

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

Exempel Implementering
Exempel Implementering

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

Slutsats: Slutanteckningar
Slutsats: Slutanteckningar

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' %} "> Denna nästa bit är egentligen inte ett 'kommando', utan snarare en extra syntax till andra Vad den gör är att den tar ut ett visst kommando och kan skriva det i en textfil. Det är lättare att förklara om du ser det i handling först. Dess syntax är:

Kommando> FilnamnOk, så låt oss säga att vi är i en viss katalog. Vi använder sedan DIR -kommandot, som om du läser Basics of Batch skulle veta att det visar innehållet i din nuvarande katalog

C: / Users / Neo \> DIRSkulle normalt mata ut

Volym i enhet C är HP Volym Serienummer är 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 Dokument2007-19-06 10:35 Nedladdningar2007-19-02 15:14 Favoriter02/19/ 2007 15:14 Länkar2007-12-05 16:01 Musik2007-30-06 01:20 Bilder2007-07-04 15:08 Sparade spel 2007-19-02 15:14 Sökningar2007-01-03 07:23 PM 242, 947 Testrekord. Wma2007-19-06 10:39 Videor2007-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 om vi lägger till> och till den

C: / Users / Neo / DIR> DIRContents.txtVi får ingen utmatning, men istället får vi en helt ny textfil med namnet DIRContents.txt som har utdata i den! Men vänta, det är ett problem! Jag vill ha flera utdata i samma fil, men min> fortsätter bara att skriva över den och inte lägga till den! Vad gör jag?

Steg 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 | lägg till: 'auto = webp & frame = 1 & height = 300' %} ">

Parameter (2/2) "src =" {{file.large_url | lägg till: 'auto = webp & frame = 1 & height = 300' %} ">

Parameter (2/2) "src =" {{file.large_url | lägg till: 'auto = webp & frame = 1 & height = 300' %} ">

Parameter (2/2) "src =" {{file.large_url | lägg till: 'auto = webp & frame = 1 & height = 300' %} ">

Parameter (2/2) "src =" {{file.large_url | lägg till: 'auto = webp & frame = 1 & height = 300' %} ">

Parameter (2/2) "src =" {{file.large_url | lägg till: 'auto = webp & frame = 1 & height = 300' %} "> Jag är glad att du frågade. Det är vad >> parametern är till för! >> är precis som>, men istället för att helt skriva över den angivna filen lägger vi till den! Så låt oss prova den.

DIR >> DIRContents.txtPropert! Fungerade perfekt! Så vänta. Betyder det att jag kan skriva vad jag vill i en textfil? jag vill prova det

Batch Is Awesome> Awesome.txtVad? Varför fungerade det inte? Det beror på att parametern bara skriver ut utgången från legitima kommandon, inte bara allt du skriver i. Men detta är ett problem som helt enkelt är löst. Kom ihåg att parametrarna registrerar kommandoutmatning. Vilket kommando har en utgång som vi kan styra? ECHO -kommandot

ECHO Batch Is Awesome> Awesome.txtECHO Jag är så glad att jag vet det. >> Awesome.txtJippie! Kom ihåg. >> lägger till utdata till nästa rad i filen.

Steg 11: Exempel på implementering

Ok. Så låt oss sätta ihop allt! Här är några exempelkoder jag har gjort som använder kommandona som jag har visat dig i denna instruerbara. Denna kod kommer att lägga till 1 till en variabel kontinuerligt och mata ut resultatet på obestämd tid.

@ECHO OFFSET /a num = 1: RepeatECHO%num%SET /a num =%num%+1GOTO RepeatDenna kod startar CMD.exe 5 gånger

@ECHO OFFSET /a RepeatNum = 5: OpenIF%RepeatNum%== 0 GOTO EndSTART CMD.exeSET /a RepeatNum =%RepeatNum%-1GOTO Open: EndDenna kod skapar en batchfil i C: / Users / Neo och kör den

@ECHO OFFCHDIR C: / Users / NeoECHO @ECHO OFF> Hello.batECHO ECHO Hello! >> Hello.batECHO ECHO Jag & aposm i din C -enhet! >> Hello.batECHO PAUSE >> Hello.batC: / Users / Neo / Hello. batPauseDetta är ett litet spelparti. Du måste gissa antalet

@ECHO OFFSET /a GuessNum = 0SET /a Answer =%RANDOM%ECHO Gissa vad jag tänker på.:RetrySET /p Guess = IF%Guess%LSS%Answer%ECHO Mitt nummer är högre. IF%Gissa%GTR%Svar %ECHO Mitt nummer är lägre. IF%Gissa%==%Svara%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO Försök igen: ENDECHO Du har rätt! Svaret var %Answer %ECHO Det tog %GuessNum %Guesses. ECHO. PAUSEOch den här, jag gillar mycket. Om du inte är försiktig kan det dock gå ur hand ganska snabbt, beroende på datorns förmåga. Vad den här filen gör är att den på obestämd tid skapar numrerade textfiler i en katalog som heter lolnumbers. Var och en av dessa textfiler innehåller DIR för lolnumbers -katalogen. Saken är att katalogen ständigt blir fylligare och fylligare med textfiler, så varje på varandra följande textfil är större än den förra. Resultatet av detta är en mapp vars totala storlek blir större och större för varje sekund

@ECHO OFFSET /a num = 1MKDIR lolnumbersCD lolnumbers: RestartDIR>%num%.txtSET /a num+= 1GOTO Starta omDet här är ganska grundläggande koder. Experimentera med dem till ditt hjärta.

Steg 12: Slutsats: Slutanteckningar

Puh. Vi täckte en hel del i detta instruerbara. Den här är faktiskt tre gånger längre än min förra. Jag hoppas att du kommer att gilla det! Bara några påminnelser innan jag går. Kom ihåg: När du ställer in en variabel ska du aldrig sätta ett mellanslag mellan variabeln och dess värde. JA:

SET -variabel1 = värdeDet extra utrymmet gör att din variabel är tom

SET -variabel1 = värdeDessutom de flera IF: erna. Kom ihåg att formatera Parentesen korrekt: JA

OM 1 == 1 (ECHO One är lika med ett!) ELSE (ECHO Something & aposs wrong with this program.)NEJ

OM 1 == 1 (ECHO One är lika med ett!) ELSE (ECHO Something & aposs wrong with this program.)Det finns också inbyggda variabler

%CD %% DATE %% TIME %% RANDOM%% CD% Expanderar till den aktuella katalogen. I grund och botten är vägen bakom de första>% DATE% och% TIME% datum och tid.% RANDOM% ger ett slumpmässigt tal mellan 0 och 32767. Området kan inte ändras, jag tror inte. Och det är i princip det! Jag hoppas att du tyckte om detta instruerbara, jag arbetade verkligen hårt med det. Förhoppningsvis kommer det att kompensera för 10 månaders frånvaro. Nu de dåliga nyheterna. Jag kommer att ha lite problem med att svara på frågor under de närmaste månaderna, eftersom jag kommer att vara utomlands. Men om du har en fråga, lämna bara en kommentar vem som helst. Om jag får tillgång till en dator svarar jag säkert, men jag tror inte att det kommer att vara nödvändigt. Instructables är en vänlig gemenskap, och jag är säker på att någon där ute kommer att hjälpa dig i din situation. Happy Batching!

Rekommenderad: