Taula de continguts:
- Pas 1: Comanda START
- Pas 2: Ordre SET: teoria de cordes (1/4)
- Pas 3: Ordre SET - Mr.Math (2/4)
- Pas 4: Ordre SET: entrada d'usuari (3/4)
- Pas 5: Ordre SET: Més que el que compleix (4/4)
- Pas 6: Comandament IF: tothom és igual (1/2)
- Pas 7: Comandament IF: però sóc més gran que tu (2/2)
- Pas 8: Ordre GOTO
- Pas 9:> Paràmetre (1/2)
- Pas 10: >> Paràmetre (2/2)
- Pas 11: Exemple d'implementació
- Pas 12: Conclusió: notes finals
Vídeo: Batch avançat: 12 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:16
però està bé, simplement utilitzeu l'ordre CD o CHDIR per canviar de directori. Però realment no importa en aquest cas. "," Top ": 0.08480565371024736," left ": 0.014285714285714285," height ": 0.8586572438162544," width ": 0.9357142857142857}]">
PER FAVOR, DIRIGIU QUALSEVOL PREGUNTA QUE PODIU TENIR AL MEU BLOG: https://tamsanh.com/blog/2008/07/11/batch-tutorial-3-advanced-batch/ Ja no visito les instruccions, i obtindreu una informació més ràpida resposta d’aquesta manera. Ei nois! Tam Nguyen aquí. Ha passat molt de temps, però ja és aquí! Us presento la propera entrega dels meus tutorials per lots. Potser (o no) heu llegit els meus altres instructables: Conceptes bàsics de Batch Bàsicament més avançat Aquest instructable pren alguns elements dels dos primers instructables. És a dir: ECHO CommandCD CommandDIR Command Si no heu llegit les altres dues, us suggereixo que reviseu aquestes ordres ràpidament. Vaig a esperar aquí. Molt bé! Al final d’aquest instructiu, estareu íntim amb: Comanda STARTSET CommandIF CommandGOTO Commandand> i >> Paràmetres Amb aquestes ordres, podreu crear fitxers de lot dinàmics que poden canviar segons l’entrada de l’usuari., i creeu i amplieu. Així que obrim aquest bon símbol del sistema i comenceu! Executeu -> cmd Alternativament, podeu anar a: Inici-> Fitxers de programa-> Accessoris-> Indicador de comandes, de manera que he dividit algunes ordres en més d'una pàgina principalment amb finalitats estètiques; M'agradava veure les imatges mentre llegia el text sense haver de desplaçar-me cap amunt i cap avall. Regla general per visualitzar la imatge; Normalment, després de cada fragment de codi, hi ha una imatge.
Pas 1: Comanda START
L'ordre START és una petita comanda que comença a fer coses. És una ordre senzilla i ens ajudarà a escalfar-nos abans d'arribar a les ordres més difícils. Els paràmetres de l'ordre són exactament el que creieu que són.
INICI ThingToBeStarted.exeBastant senzill
INICI WMPlayer.exeNo només podeu START.exe's, també podeu escriure un lloc web i s'obrirà al navegador predeterminat
INICIA www. Instructables.comBastant fàcil, eh? D'acord. Passem ara a la veritable carn de l'ordre Instructable: SET.
Pas 2: Ordre SET: teoria de cordes (1/4)
L'ordre SET: el definidor de variables. Ah. Les variables. L’ambrosia del desenvolupador. Les variables són bits de memòria que són … err, variables. No hi ha IFs I NOs ni NOTS al respecte! (jeje, perdó). D'acord! Aleshores, com funciona aquest nadó? De manera senzilla, els paràmetres de l’ordre SET són: SET VariableName = ValueSET variable crearà variables de cadenes per si mateixes.
SET TestVS = Prova la cadena variable!En aquest cas, només hem emmagatzemat el valor "Prova de la cadena variable". a la variable TestVS. Bé, això és tot divertit i jocs, però, com recuperem el valor de la variable? Utilitzem%. Només cal afegir% al voltant del nom de la variable
ECHO% TestVS%Molt bé, però què més pot fer?
Pas 3: Ordre SET - Mr. Math (2/4)
Pot fer matemàtiques? Doncs fem un simple lot per provar-ho.
@ECHO OFFSET Test = 1ECHO% Test% SET Test =% Test% -1ECHO% Test% PAUSEAi, què va passar? Això hauria d’haver funcionat! Espereu un minut … què va ser això amb les ordres SET que només feien cadenes? Sí. L'ordre SET només crearà una variable de cadena, és a dir, crearà la interpretació més literal del valor. No pensa en "1 - 1" igual a "0", sinó en "1 - 1" igual a "1 - 1." Com volem canviar-ho? Volem que la variable no es copiï directament, sinó que s’avalui. Això vol dir que el volem convertir d'una cadena en una expressió. Un canvi molt senzill, simplement afegiu a / a a l’ordre SET. Aquí teniu un fitxer per lots senzill per veure’l en acció, o bé podeu escriure’l al manual del símbol del sistema. Jo suggereixo això últim; és molt més ràpid i el codi no és massa complicat, però si realment voleu el fitxer per lots, aquí el teniu
@ECHO OFFSET / a Test = 2 + 2 TECHO% Test% PAUSEFantàstic! Ho expressava perfectament. Ara sabem quins canvis cal fer al nostre 'test de matemàtiques.bat
@ECHO OFFSET / a Test = 1ECHO% Test% SET / a Test =% Test% -1ECHO% Test% PAUSED'acord. Així que anem a executar-lo! Genial! Va funcionar perfectament. Però què passa?
Pas 4: Ordre SET: entrada d'usuari (3/4)
El SET també té la possibilitat de sol·licitar l'entrada a l'usuari. En afegir / p als paràmetres SET, el transforma d'un configurador de variables normal a un configurador de variables controlat per l'usuari.
SET / p UDefineix =Amb el / p, el programa realment fa una pausa i espera l’entrada de l’usuari. Però espereu, no veig un paràmetre / a, vol dir que la variable només és una cadena? El / p dels paràmetres nega completament el / a i, si ho proveu, simplement obtindreu un error d'operand que falta. Això significa que la variable definida per l'usuari no podrà avaluar expressions. Què es pot fer, doncs, aquí teniu un truc complicat que vaig pensar que podem utilitzar. L'ordre SET no és correcte tot l'ús simultani de paràmetres / p i / a? Bé, què passa amb l’ús seqüencial dels paràmetres / a i / p? Ahhh … botes astutes
@ECHO OFFECHO Calculator Version 1.0ECHO. SET / p UDefine = SET / a UDefine =% UDefine% ECHO = ECHO% UDefine% ECHO. PAUSEBona calculadora que hi has arribat. Si ara no ho heu entès, {{{ECHO.}}} És una línia en blanc. No és cool-cool?
Pas 5: Ordre SET: Més que el que compleix (4/4)
En aquest punt, pot semblar que les variables de l'ordre SET només són bones per a cadenes i expressions. No és cert. De fet, les variables són molt flexibles i no es limiten a ECHO. Heu intentat escriure una variable per si mateixa?
SET Test =% instructable% TestQuin error tan estrany … diu que no es reconeix l'ordre "Instructables", no que% Test% no tenia sintaxi. Per tant, això vol dir que DOS tracta cada variable com si fos escrita a mà. Bé, i si
SET Test = START cmd.exe% Test%Increïble! Va funcionar! DOS tracta cada variable tal com l’ha escrit l’usuari i l’executa en conseqüència. Aquí teniu un codi interessant: (només copieu / enganxeu; és una mica tediós.
@ECHO OffSET Variable1 = ECSET Variable2 = HSET Variable3 = O CSET Variable4 = ooSET Variable5 = l! ECHO% Variable1 %% Variable2 %% Variable3 %% Variable4 %% Variable5% ECHO.% Variable1 %% Variable2 %% Variable4% Variable2 %% Variable % Variable5% PausaNo és net? Cada variable conté dues lletres de tot el missatge (excepte la Variable2) i, posant les variables en ordre, cada lletra suma i acaba tota l’ordre d’ECHO Cool! La comanda SET és una de les ordres més complicades i potents de la Diccionari DOS.
Pas 6: Comandament IF: tothom és igual (1/2)
Aquell clàssic operand condicional. Bàsic, però potent, no obstant això. Per a aquells que no han programat mai abans, l'ordre IF és exactament com sona. Si una expressió de la sintaxi demostra que és cert (o NO és cert), es durà a terme la següent seqüència d’ordres. La línia d’ordres bàsica és així:
IF% variable1% ==% variable2% ECHO Aquesta part s'executao si teniu més d'una sintaxi
@ECHO OFFIF% variable1% ==% variable2% (ECHO Aquesta part s'executa. ECHO També ho és això.) ELSE (ECHO Si variable1 no & apost = variable 2, això passa. ECHO i això també passa.)Nota: La peculiar col·locació del parèntesi no és perquè no crec en el codi organitzat, sinó perquè si no es troba en aquests llocs, tot el fragment IF no funcionarà. Per tant, si hi ha algun error amb el vostre codi IF, el més probable és que sigui el parèntesi. Per executar aquest lot concret, he fet servir el símbol del sistema, de manera que podia definir les variables sense haver d’editar el múltiple IfVariableTest.bat. vegades.
Pas 7: Comandament IF: però sóc més gran que tu (2/2)
D’acord, per tant, teniu una bona declaració IF i tot, i comprovar si les variables són iguals o no és agradable i tot, però no s’adapta a la factura. Vull que passi alguna cosa si la variable 1 és inferior a l'altra variable. Per a nosaltres, programadors, sé que sembla una tasca senzilla. Feu el que fan tots els altres llenguatges de programació. Teniu els vostres cavalls cowboy. No molt ràpid. Un fitxer per lots no és només el llenguatge de programació habitual. Per ximple que sembli, "" no funcionen amb fitxers per lots.
EQU - Igual - == NEQ - No és igual LSS - Menys de GTR - Més gran que LEQ - Menys que o igual a TOGEQ - Més gran o igual aSimplement poseu aquests operands en lloc de l'exemple ==
IF 32 GTR 3 ECHO Això funcionarà
@ECHO OFFIF 32 GEQ 32 (ECHO 32 és més gran o igual a 32) ELSE (ECHO 32 és definitivament igual a 32) PAUSEIF 32 LSS 32 (ECHO 32 és inferior a 32? Crec que no.) ELSE (ECHO 32 és No menys de 32. Final de la història.) PAUSA
Pas 8: Ordre GOTO
L'ordre GOTO. Fa exactament el que diu; VA A UNA etiqueta a l'script del fitxer per lots. Per utilitzar aquesta ordre, primer heu de tenir una etiqueta al seu lloc. Les etiquetes tenen aquest aspecte:
: Etiqueta1Es tracta simplement de dos punts abans d’una sèrie no separada de lletres i / o nombres. L’ordre GOTO s’estructura així
GOTO Label1És tan fàcil! Penseu-hi, no estic segur de per què no he posat això al lot lleugerament avançat. En qualsevol cas, aquesta ordre es pot utilitzar per repetir un fitxer per lots simplement GOTO una etiqueta que executi de nou l’ordre GOTO
@ECHO OFF: RepeatMeECHO Això es repetirà tret que premeu "CTRL-C" GOTO RepeatMePer cert, el fitxer per lots diu la veritat. CTRL-C és la pausa i el sol·licitud de finalització universals. CTRL-S és simplement Pausa. Tancar la finestra funciona igual de bé. El GOTO pot ometre o reordenar el vostre codi
GOTO TurnEOffGOTO MultipleGotoECHO Aquest ECHO s’ometrà.:MultipleGotoGOTO 3: ENDPAUSEEXIT: 1ECHO The EndGOTO END: 3ECHO Això es mostrarà primer GOTO 2: TurnEOff @ ECHO OFFGOTO MultipleGoto: 2ECHO Aquest és el segon, encara que sigui 1El codi anterior es va estructurar de manera confusa a propòsit per emfatitzar la capacitat del GOTO de saltar al codi.
Pas 9:> Paràmetre (1/2)
Paràmetre (1/2) "src =" https://content.instructables.com/ORIG/FBH/P5XV/F3JESWI8/FBHP5XVF3JESWI8-j.webp
Paràmetre (1/2) "src =" https://content.instructables.com/ORIG/FIX/9BXW/F3JESWI5/FIX9BXWF3JESWI5-j.webp
Paràmetre (1/2) "src =" https://content.instructables.com/ORIG/FHZ/92ZS/F3JESWI7/FHZ92ZSF3JESWI7-j.webp
Paràmetre (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Paràmetre (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Paràmetre (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Paràmetre (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Paràmetre (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} "> El següent bit no és realment un 'ordre', sinó una sintaxi afegida a altres ordres. El que fa és agafar la sortida d'una ordre determinada i pot escriure-la en un fitxer de text. És més fàcil explicar si primer la veieu en acció. La seva sintaxi és:
Ordre> Nom del fitxerD’acord, diguem-ne que estem en un directori determinat. A continuació, fem servir l’ordre DIR, que, si llegiu els conceptes bàsics de Batch, sabríeu que mostra el contingut del directori actual
C: / Users / Neo \> DIRNormalment sortiria
El volum a la unitat C és el número de sèrie del volum HP: BC7E-E26C Directori de C: / Users / Neo06 / 30/2007 11:14 AM.06 / 30/2007 11:14 AM..03 / 17/2007 06:41 PM.idlerc 2007-02-19 15:14 Contactes 2007-06-19 22:44 Escriptori 2007-06-29 08:47 Documents Documents 2007-06-19 10:35 Descàrregues 2007-02-19 15:14 Favorits02 / 19 / 2007 15:14 Enllaços 2007-05-12 16:01 Música 2007-06-30 01:20 Fotos 2007-07-04 15:08 Jocs guardats 2007-02-19 15:14 Cerques 2007-03-01 07:23 PM 242, 947 Registre de proves.wma06 / 19/2007 10:39 AM Vídeos06 / 18/2007 09:57 1, 324, 574 wp_screenprint_mc.pdf06 / 18/2007 09:59 AM 73, 996, 533 wp_tshirt_full.mp4 4 Fitxer (s) 75, 564, 054 bytes 14 Dir (s) 132, 927, 537, 152 bytes lliuresPerò, si hi afegim el> i
C: / Users / Neo / DIR> DIRContents.txtNo obtenim cap sortida, però en canvi, obtenim un fitxer de text completament nou anomenat DIRContents.txt que conté la sortida. Coolness, però espereu, hi ha un problema. Vull tenir diverses sortides al mateix fitxer, però el meu> continua sobreescrivint-lo i no afegint-lo. Què faig?
Pas 10: >> Paràmetre (2/2)
Paràmetre (2/2) "src =" https://content.instructables.com/ORIG/FG4/B58B/F3JESWIJ/FG4B58BF3JESWIJ-j.webp
Paràmetre (2/2) "src =" https://content.instructables.com/ORIG/F05/GZB1/F3JESWIK/F05GZB1F3JESWIK-j.webp
Paràmetre (2/2) "src =" https://content.instructables.com/ORIG/F93/Q7VS/F3JESWL2/F93Q7VSF3JESWL2-j.webp
Paràmetre (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Paràmetre (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Paràmetre (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Paràmetre (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Paràmetre (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Paràmetre (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} "> Bé, m'alegro que ho hagueu preguntat. Per a això serveix el >> Paràmetre. >> és igual que el>, però en lloc de sobreescriure completament el fitxer especificat, hi afegim! Per tant, provem-ho.
DIR >> DIRContents.txtNeat! Ha funcionat perfectament. Així que espereu. Vol dir que puc escriure qualsevol cosa que vulgui en un fitxer de text? Vull provar-ho
El lot és impressionant> Awesome.txtQuè? Per què això no va funcionar? És perquè el paràmetre només escriu la sortida dels comandaments legítims, no només qualsevol cosa que escriviu. Però, aquest és un problema que simplement es resol. Recordeu que els paràmetres registren la sortida d’ordres. Quina ordre té una sortida que podem controlar? L'ordre ECHO
ECHO Batch is Awesome> Awesome.txtECHO I i m'agrada tant que ho sàpiga. >> Awesome.txtVisca! Recordeu. El >> afegeix la sortida a la següent línia del fitxer.
Pas 11: Exemple d'implementació
D'acord. Així que ajuntem-ho tot! Aquí teniu alguns exemples de codis que he fet que utilitzen les ordres que us he mostrat en aquest instructable. Aquest codi afegirà 1 a una variable contínuament i generarà el resultat de manera indefinida.
@ECHO OFFSET / a num = 1: Repetiu TECHO% num% SET / a num =% num% + 1 Repetició GOTOAquest codi s'iniciarà CMD.exe 5 vegades
@ECHO OFFSET / a RepeatNum = 5: OpenIF% RepeatNum% == 0 GOTO EndSTART CMD.exeSET / a RepeatNum =% RepeatNum% -1GOTO Open: EndAquest codi crearà un fitxer per lots a C: / Users / Neo i l'executarà
@ECHO OFFCHDIR C: / Usuaris / NeoECHO @ECHO OFF> Hello.batECHO ECHO Hola! >> Hello.batECHO ECHO I aposme a la vostra unitat C! >> Hello.batECHO PAUSE >> Hello.batC: / Users / Neo / Hello. batPauseAquest és un petit lot de jocs. Heu d’endevinar el número
@ECHO OFFSET / a GuessNum = 0SET / a Resposta =% RANDOM% ECHO Endevina en què penso el número I i l'aposme.:RetrySET / p Endevina = SI% Endevina% LSS% Respon% ECHO El meu número és més alt. SI% Endevina% GTR% Resposta % ECHO El meu número és inferior. IF% Guess% ==% Resposta% GOTO ENDECHO. SET / a GuessNum =% GuessNum% + 1GOTO Torna-ho a provar: ENDECHO Estàs correcte! La resposta era% Answer% ECHO Va trigar% GuessNum% Guesses. ECHO. PAUSEI aquest, m’agrada molt. Si no teniu cura, però, pot sortir de les mans bastant ràpidament, en funció de la capacitat de l’ordinador. El que fa aquest fitxer és que crea fitxers de text numerats indefinidament en un directori anomenat lolnumbers. Cadascun d'aquests fitxers de text conté el DIR del directori lolnumbers. El cas és que el directori és cada cop més ple amb fitxers de text, de manera que cada fitxer de text consecutiu és més gran que l’anterior. El resultat és una carpeta la mida total de la qual augmenta cada segon
@ECHO OFFSET / a num = 1MKDIR lolnumbers CD lolnumbers: RestartDIR>% num%.txtSET / a num + = 1GOTO RestartAquests són codis força bàsics. Experimenteu amb ells al vostre abast.
Pas 12: Conclusió: notes finals
Uf. Hem cobert un munt de coses en aquest instructiu. Aquest és, de fet, 3 vegades més llarg que el meu darrer. Espero que us hagi agradat! Només heu de recordar-los abans d’anar-hi. Recordeu: quan configureu una variable, no poseu mai cap espai entre la variable i el seu valor. SÍ:
SET variable1 = ValorL'espai addicional farà que la variable quedi en blanc. NO
SET variable1 = ValorA més, els múltiples IF. Recordeu formatar correctament el parèntesi: SÍ
SI 1 == 1 (ECHO One Equals One!) ALTRES (ECHO Hi ha alguna cosa que no pot funcionar amb aquest programa). NO
SI 1 == 1 (ECHO One Equals One!) ALTRES (ECHO Hi ha alguna cosa que no pot funcionar amb aquest programa). A més, també hi ha variables incorporades
% CD %% DATE %% TIME %% RANDOM%% CD% S'expandeix al directori actual. Bàsicament, el camí darrere del primer>% DATE% i% TIME% són la data i l’hora.% RANDOM% dóna un número aleatori entre 0 i 32767. No crec que l’interval es pugui canviar. I això és bàsicament. Espero que us hagi agradat aquest instructiu, he treballat moltíssim. Esperem que compensi l’absència de deu mesos. Ara les males notícies. Tindré problemes per respondre qualsevol pregunta en els propers mesos, perquè estaré fora del país. Però si teniu alguna pregunta, deixeu un comentari a qualsevol persona. Si tinc accés a un ordinador, segur que respondré, però no crec que sigui necessari; Instructables és una comunitat amable i estic segur que algú us ajudarà en la vostra situació.
Recomanat:
Robot avançat de seguiment de línia: 22 passos (amb imatges)
Robot de seguiment de línia avançat: es tracta d’un robot de seguiment de línia avançat basat en el sensor de línia Teensy 3.6 i QTRX que he construït i he estat treballant des de fa força temps. Hi ha algunes millores importants en el disseny i el rendiment de la meva línia anterior de robot següent. T
Experiments de registre avançat de dades (amb Python): 11 passos
Experiments de registre avançat de dades (utilitzant Python): hi ha un munt d’instructibles per al registre de dades, de manera que quan volia crear un projecte de registre propi vaig mirar un munt de persones. Alguns eren bons, d’altres no tant, així que vaig decidir agafar algunes de les millors idees i fer la meva pròpia sol·licitud. Aquest resu
Avançat model Rocket Flight Computer: 4 passos (amb imatges)
Advanced Model Rocket Flight Computer !: Jo necessitava un model de vol de coet de gamma alta per al meu coet més recent que es controlés sense aletes. Així que vaig construir el meu propi! El motiu pel qual vaig decidir construir-lo va ser perquè vaig construir coets TVC (control de vectors empentes). Això significa que hi ha
Penjoll LED avançat: 4 passos
Penjoll LED avançat: en aquest instructiu us mostraré com podeu fabricar el vostre propi penjoll LED. Haureu de comprovar el meu penjoll LED anterior que us sigui instructiu, us mostraré alguns consells fantàstics. Les joies formen part de la bellesa? Ho descobrirem
Sistema de seguretat avançat: 7 passos
Sistema de seguretat avançat: alguna vegada heu volgut assegurar completament la vostra casa i fer que els intrusos poguessin entrar a casa vostra? Si és així, aquesta és la solució per a vosaltres. He creat un sistema de seguretat avançat, que és un sistema que assegurarà la vostra casa des de l'interior i l'exterior