Tabla de contenido:
- Paso 1: Comando de INICIO
- Paso 2: comando SET - Teoría de cadenas (1/4)
- Paso 3: SET Command - Mr.Math (2/4)
- Paso 4: Comando SET - Entrada del usuario (3/4)
- Paso 5: comando SET - Más de lo que se ve (4/4)
- Paso 6: Comando IF: todos son iguales (1/2)
- Paso 7: Comando IF - Pero soy más grande que tú (2/2)
- Paso 8: comando GOTO
- Paso 9:> Parámetro (1/2)
- Paso 10: >> Parámetro (2/2)
- Paso 11: Implementación de ejemplo
- Paso 12: Conclusión: Notas finales
Video: Lote avanzado: 12 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:44
pero está bien, simplemente use el comando CD o CHDIR para cambiar de directorio. Pero realmente no importa en este caso. "," Top ": 0.08480565371024736," left ": 0.014285714285714285," height ": 0.8586572438162544," width ": 0.9357142857142857}]">
POR FAVOR DIRIJA CUALQUIER PREGUNTA QUE PUEDA TENER A MI BLOG: https://tamsanh.com/blog/2008/07/11/batch-tutorial-3-advanced-batch/ Ya no visito instructables, y obtendrá un respuesta de esa manera ¡Hola chicos! Tam Nguyen aquí. Ha tardado mucho en llegar, ¡pero ya está aquí! ¡Les presento la próxima entrega de mis Tutoriales por lotes! Es posible que (o no) haya leído mis otros instructivos: Conceptos básicos de Lote Lote ligeramente más avanzado Este Instructable toma prestados algunos elementos de los dos primeros Instructables. A saber: ECHO CommandCD CommandDIR Command Si no ha leído los otros dos, le sugiero que revise esos comandos rápidamente. Esperaré aquí.¡Ok! Al final de este Instructable, estará familiarizado con: Comando INICIAR Comando SET Comando IF Comando GOTO y >> Parámetros Con estos comandos, podrá crear archivos por lotes dinámicos que pueden cambiar de acuerdo con la entrada del usuario, y crear y expandir. ¡Así que abramos ese buen símbolo del sistema y comencemos! Ejecutar -> cmd Alternativamente, puede ir a: Inicio-> Archivos de programa-> Accesorios-> Símbolo del sistema Mis explicaciones en este instructivo se hicieron un poco largas, así que he dividido algunos comandos en más de una página principalmente por motivos estéticos; Me gustó ver las imágenes mientras leía el texto sin tener que desplazarme hacia arriba y hacia abajo. Regla general para ver las imágenes; Por lo general, después de cada fragmento de código, hay una imagen.
Paso 1: Comando de INICIO
El comando START es un pequeño y agradable comando que inicia cosas. Es un comando simple y nos ayudará a calentarnos antes de llegar a los comandos más difíciles. Los parámetros del comando son exactamente lo que crees que son.
INICIAR ThingToBeStarted.exeBastante simple
INICIAR WMPlayer.exeNo solo puede INICIAR.exe, también puede escribir un sitio web y se abrirá en su navegador predeterminado
INICIO www. Instructables.comBastante fácil, ¿eh? Está bien. Ahora pasemos a la esencia real del Instructable: SET Command.
Paso 2: comando SET - Teoría de cadenas (1/4)
El comando SET: el definidor de variables Ah. Variables. La ambrosía del desarrollador. Las variables son bits de memoria que son … err, variables. ¡No hay SI Y o NO al respecto! (LOL lo siento). ¡OK! Entonces, ¿cómo funciona este bebé? Muy simple, los parámetros del comando SET son: SET VariableName = Variable ValueSET por sí mismo creará variables de cadena.
SET TestVS = Test Variable String!En este caso, simplemente almacenamos el valor "Test Variable String!" en la variable TestVS. Bueno, eso es diversión y juegos, pero ¿cómo recuperamos el valor de la variable? Usamos%. Solo agregue% alrededor del nombre de la variable
ECHO% TestVS%Ok, genial, pero ¿qué más puede hacer?
Paso 3: SET Command - Mr. Math (2/4)
¿Puede hacer matemáticas? Bueno, hagamos un lote simple para probarlo.
@ECHO OFFSET Prueba = 1ECHO% Prueba% SET Prueba =% Prueba% -1ECHO% Prueba% PAUSAAww, ¿qué pasó? ¡Eso debería haber funcionado! Espera un minuto … ¿qué fue eso de que los comandos SET solo hacen cadenas? El comando SET por sí solo creará una variable de cadena, lo que significa que creará la interpretación más literal del valor. No piensa que "1 - 1" es igual a "0", piensa que "1 - 1" es igual a "1 - 1". Entonces, ¿cómo cambiamos eso? Queremos que la variable no se copie directamente, sino que se evalúe. ¡Esto significa que queremos convertirlo de una cadena en una expresión! Un cambio muy fácil, simplemente agregue una / a al comando SET. Aquí hay un archivo por lotes simple para verlo en acción, o simplemente puede escribirlo en el manual del símbolo del sistema. Sugiero lo último; es mucho más rápido y el código no es demasiado complicado, pero si realmente desea el archivo por lotes, aquí está
@ECHO OFFSET / a Prueba = 2 + 2ECHO% Prueba% PAUSA¡Fantástico! Lo expresó perfectamente. Ahora sabemos qué cambios se deben realizar en nuestra 'prueba de matemáticas.bat
@ECHO OFFSET / a Prueba = 1ECHO% Prueba% SET / a Prueba =% Prueba% -1ECHO% Prueba% PAUSAEstá bien. ¡Así que hagámoslo! ¡Genial! ¡Funcionó perfectamente! Pero que sigue?
Paso 4: Comando SET - Entrada del usuario (3/4)
El SET también tiene la capacidad de solicitar al usuario una entrada. Al agregar / p a los parámetros del SET, lo transforma de un configurador de variables normal a un configurador de variables controlado por el usuario.
SET / p UDefine =Con / p, el programa se detiene y espera la entrada del usuario. Pero espera, no veo un parámetro / a, ¿eso significa que la variable es solo una cadena? La / p de los parámetros niega completamente la / a, y si lo intenta, simplemente obtiene un error de operando faltante. Esto significa que la variable definida por el usuario no podrá evaluar expresiones. Entonces, ¿qué se puede hacer? Bueno, aquí hay un truco complicado que pensé que podemos usar. El comando SET no hace todo el uso simultáneo de los parámetros / py / a, ¿correcto? Bueno, ¿qué pasa con el uso secuencial de los parámetros / ay / p? Ahhh … astutas botas
@ECHO OFFECHO Calculadora Versión 1.0ECHO. SET / p UDefine = SET / a UDefine =% UDefine% ECHO = ECHO% UDefine% ECHO. PAUSEBuena calculadora ya llegaste. Si aún no lo ha descubierto, el {{{ECHO.}}} Es una línea en blanco. ¿No es genial?
Paso 5: comando SET - Más de lo que se ve (4/4)
En este punto, puede parecer que las variables del comando SET solo son buenas para cadenas y expresiones. No es verdad. Las variables son, de hecho, muy, muy flexibles, y no se limitan solo a ECHO. ¿Ha intentado simplemente escribir una variable por sí misma?
Prueba SET = Instructables% Prueba%Qué error tan extraño … dice que el comando "Instructables" no se reconoce, no que% Test% no tenga sintaxis. Eso significa que DOS trata cada variable como si estuviera escrita a mano. Bueno, y si
SET Test = START cmd.exe% Test%¡Impresionante! ¡Funcionó! DOS trata cada variable como si la hubiera escrito el usuario y la ejecuta en consecuencia. Aquí hay un código interesante: (Simplemente copie / pegue; es un poco tedioso.
@ECHO OffSET Variable1 = ECSET Variable2 = HSET Variable3 = O CSET Variable4 = ooSET Variable5 = l! ECHO% Variable1 %% Variable2 %% Variable3 %% Variable4 %% Variable5% ECHO.% Variable1 %% Variable2 %% Variable3 %% Variable4% % Variable 5% pausa¿No es genial? Cada variable contiene dos letras de todo el mensaje (excepto Variable2), y poniendo las variables en orden, cada letra se suma y termina el comando completo de ECHO Cool! El comando SET es uno de los comandos más complicados y poderosos del Diccionario DOS.
Paso 6: Comando IF: todos son iguales (1/2)
Ese operando condicional clásico. Básico, pero poderoso sin embargo. Para aquellos que nunca han programado antes, el comando IF es exactamente como suena. Si una expresión en la sintaxis resulta verdadera (o NO verdadera), entonces se ejecutará la siguiente secuencia de comandos. La línea de comando básica es la siguiente:
IF% variable1% ==% variable2% ECHO Esta parte se ejecutao si tienes más de una sintaxis
@ECHO OFFIF% variable1% ==% variable2% (ECHO Esta parte se ejecuta. ECHO También lo es.) ELSE (ECHO Si la variable1 no lo hace & apost = variable 2, esto sucede. ECHO y esto también sucede). Nota: La ubicación peculiar de los paréntesis no se debe a que no crea en el código organizado, sino a que si no están en esos lugares, el fragmento de IF completo no funcionará. Por lo tanto, si hay algún error con su código IF, lo más probable es que se deba al paréntesis. Para ejecutar este lote en particular, en realidad utilicé el símbolo del sistema para poder configurar las variables sin tener que editar el múltiplo IfVariableTest.bat veces.
Paso 7: Comando IF - Pero soy más grande que tú (2/2)
Ok, entonces tienes una buena declaración IF y todo, y verificar si las variables son iguales o no es bueno y todo, pero no encaja del todo. ¡Quiero que suceda algo si la variable1 es menor que la otra variable! Para aquellos de nosotros, los programadores, sé que esto parece una tarea simple. ¡Simplemente haz lo que hacen todos los demás lenguajes de programación! No tan rapido. Un archivo por lotes no es solo su lenguaje de programación habitual. Por tonto que parezca, el "" no funciona con archivos por lotes.
EQU - Igual - == NEQ - No igual LSS - Menor que GTR - Mayor que LEQ - Menor o igual a GEQ - Mayor o igual queSimplemente coloque estos operandos en lugar del == Ejemplo
IF 32 GTR 3 ECHO Esto funcionará
@ECHO OFFIF 32 GEQ 32 (ECHO 32 es mayor que o igual a 32) ELSE (ECHO 32 es definitivamente igual a 32) PAUSEIF 32 LSS 32 (¿ECHO 32 es menor que 32? Creo que no) ELSE (ECHO 32 es No menos de 32. Fin de la historia.) PAUSA
Paso 8: comando GOTO
El comando GOTO. Hace exactamente lo que dice; VA A una etiqueta en la secuencia de comandos del archivo por lotes. Para usar este comando, primero debe tener una etiqueta en su lugar. Las etiquetas tienen este aspecto:
: Etiqueta1Es simplemente dos puntos antes de una serie no espaciada de letras y / o números. El comando GOTO está estructurado así
GOTO Label1¡Es fácil! Ahora que lo pienso, no estoy muy seguro de por qué no puse esto en el Lote Ligeramente Avanzado En cualquier caso, este comando se puede usar para repetir un archivo por lotes simplemente GOTO una etiqueta que ejecuta el comando GOTO nuevamente
@ECHO OFF: RepeatMeECHO Esto se repetirá a menos que presione "CTRL-C" GOTO RepeatMeEl archivo por lotes dice la verdad, por cierto. CTRL-C es la pausa universal y el aviso de terminación. CTRL-S es simplemente Pausa. Pero cerrar la ventana funciona igual de bien. GOTO también puede omitir o reordenar su código
GOTO TurnEOffGOTO MultipleGotoECHO Este ECHO se va a omitir.:MultipleGotoGOTO 3: ENDPAUSEEXIT: 1ECHO The EndGOTO END: 3ECHO Esto se mostrará primero GOTO 2: TurnEOff @ ECHO OFFGOTO MultipleGoto: 2ECHO Este es el segundo, aunque sea el último en el código. 1El código anterior se estructuró de manera confusa a propósito para enfatizar la capacidad de GOTO para saltar en el código.
Paso 9:> Parámetro (1/2)
Parámetro (1/2) "src =" https://content.instructables.com/ORIG/FBH/P5XV/F3JESWI8/FBHP5XVF3JESWI8-j.webp
Parámetro (1/2) "src =" https://content.instructables.com/ORIG/FIX/9BXW/F3JESWI5/FIX9BXWF3JESWI5-j.webp
Parámetro (1/2) "src =" https://content.instructables.com/ORIG/FHZ/92ZS/F3JESWI7/FHZ92ZSF3JESWI7-j.webp
Parámetro (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parámetro (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parámetro (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parámetro (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parámetro (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} "> El siguiente bit no es realmente un 'comando', sino una sintaxis agregada a otros comandos. Lo que hace es que toma la salida de un comando determinado y puede escribirlo en un archivo de texto. Es más fácil de explicar si lo ve en acción primero. Su sintaxis es:
Comando> Nombre de archivoBien, digamos que estamos en un directorio determinado. Luego usamos el comando DIR, que, si lee los conceptos básicos de Batch, sabrá que muestra el contenido de su directorio actual
C: / Usuarios / Neo \> DIRNormalmente saldría
El volumen en la unidad C es el número de serie del volumen HP es BC7E-E26C Directorio de C: / Users / Neo06 / 30/2007 11:14 AM.06 / 30/2007 11:14 AM..03 / 17/2007 06:41 PM.idlerc02 / 19/2007 03:14 PM Contactos06 / 19/2007 10:44 PM Escritorio06 / 29/2007 08:47 AM Documentos06 / 19/2007 10:35 AM Descargas02 / 19/2007 03:14 PM Favoritos02 / 19 / 2007 03:14 PM Enlaces05 / 12/2007 04:01 PM Música06 / 30/2007 01:20 AM Imágenes04 / 07/2007 03:08 PM Juegos guardados02 / 19/2007 03:14 PM Búsquedas03 / 01/2007 07:23 PM 242, 947 Test Record.wma06 / 19/2007 10:39 AM Videos06 / 18/2007 09:57 AM 1, 324, 574 wp_screenprint_mc.pdf06 / 18/2007 09:59 AM 73, 996, 533 wp_tshirt_full.mp4 4 Archivo (s) 75, 564, 054 bytes 14 Dir (s) 132, 927, 537, 152 bytes libresPero, si le agregamos el> y
C: / Users / Neo / DIR> DIRContents.txtNo obtenemos una salida, sino que obtenemos un archivo de texto completamente nuevo llamado DIRContents.txt que tiene la Salida en él. ¡Genial! Pero espera, ¡hay un problema! Quiero tener múltiples salidas en el mismo archivo, ¡pero mi> sigue sobrescribiéndolo y no agregándolo! ¿Qué debo hacer?
Paso 10: >> Parámetro (2/2)
Parámetro (2/2) "src =" https://content.instructables.com/ORIG/FG4/B58B/F3JESWIJ/FG4B58BF3JESWIJ-j.webp
Parámetro (2/2) "src =" https://content.instructables.com/ORIG/F05/GZB1/F3JESWIK/F05GZB1F3JESWIK-j.webp
Parámetro (2/2) "src =" https://content.instructables.com/ORIG/F93/Q7VS/F3JESWL2/F93Q7VSF3JESWL2-j.webp
Parámetro (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parámetro (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parámetro (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parámetro (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parámetro (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Parámetro (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} "> Bueno, me alegro de que lo hayas preguntado. ¡Para eso es el >> Parámetro! >> es como el>, pero en lugar de sobrescribir completamente el archivo especificado, ¡agregamos! Así que intentémoslo.
DIR >> DIRContents.txt¡Limpio! ¡Funcionó perfectamente! Entonces espera. ¿Eso significa que puedo escribir lo que quiera en un archivo de texto? Quiero intentarlo
El lote es impresionante> Awesome.txt¿Qué? ¿Por qué no funcionó? Esto se debe a que el parámetro solo escribe la salida de los comandos legítimos, no solo cualquier cosa que ingrese. Pero este es un problema que simplemente se resuelve. Recuerde, los parámetros registran la salida de los comandos. ¿Qué comando tiene una salida que podemos controlar? El comando ECHO
ECHO Batch Is Awesome> Awesome.txtECHO Me alegro mucho de saberlo. >> Awesome.txt¡Hurra! Recordar. El >> agrega la Salida a la siguiente línea del archivo.
Paso 11: Implementación de ejemplo
Está bien. ¡Así que pongámoslo todo junto! Aquí hay algunos códigos de muestra que hice que usan los comandos que le mostré en este instructivo. Este código agregará 1 a una variable continuamente y generará el resultado de forma indefinida.
@ECHO OFFSET / a num = 1: RepetirECHO% num% SET / a num =% num% + 1GOTO RepetirEste código iniciará CMD.exe 5 veces
@ECHO OFFSET / a RepeatNum = 5: OpenIF% RepeatNum% == 0 GOTO EndSTART CMD.exeSET / a RepeatNum =% RepeatNum% -1GOTO Open: EndEste código creará un archivo por lotes en C: / Users / Neo y lo ejecutará
@ECHO OFFCHDIR C: / Users / NeoECHO @ECHO OFF> Hola.batECHO ECHO ¡Hola! >> ¡Hola.batECHO ECHO I & aposm en tu unidad C! >> Hola.batECHO PAUSE >> Hola.batC: / Usuarios / Neo / Hola. batPauseEste es un pequeño lote de juegos. Debes adivinar el número
@ECHO OFFSET / a GuessNum = 0SET / a Answer =% RANDOM% ECHO Adivina en qué está pensando el Número I & aposmo.:RetrySET / p Guess = IF% Guess% LSS% Answer% ECHO Mi número es más alto IF% Guess% GTR% Answer % ECHO Mi número es más bajo. IF% Guess% ==% Answer% GOTO ENDECHO. SET / a GuessNum =% GuessNum% + 1GOTO Reintentar: ENDECHO ¡Estás en lo correcto! La respuesta fue% Answer% ECHO Se necesitó% GuessNum% Guesses. ECHO. PAUSEY este, me gusta mucho. Sin embargo, si no tiene cuidado, puede salirse de control con bastante rapidez, dependiendo de la capacidad de su computadora. Lo que hace este archivo es crear indefinidamente archivos de texto numerados en un directorio llamado lolnumbers. Cada uno de estos archivos de texto contiene el DIR del directorio lolnumbers. La cuestión es que el directorio se llena cada vez más con archivos de texto, por lo que cada archivo de texto consecutivo es más grande que el anterior. El resultado de esto es una carpeta cuyo tamaño total aumenta cada segundo.
@ECHO OFFSET / a num = 1MKDIR lolnumbersCD lolnumbers: RestartDIR>% num%.txtSET / a num + = 1GOTO ReiniciarEstos son códigos bastante básicos. Experimente con ellos al contenido de su corazón.
Paso 12: Conclusión: Notas finales
Uf. Cubrimos muchísimo en este instructable. Este es, de hecho, 3 veces más largo que el último. ¡Espero que lo hayan disfrutado! Solo unos pocos recordatorios antes de irme. Recuerde: cuando establezca una variable, nunca ponga un espacio entre la variable y su valor. YES:
SET variable1 = ValorEl espacio adicional hará que su variable esté en blanco.
SET variable1 = ValorAdemás, los múltiples IF. Recuerde formatear el paréntesis correctamente: SÍ
SI 1 == 1 (¡ECHO uno es igual a uno!) ELSE (ECHO Algo y un problema con este programa). NO
SI 1 == 1 (¡ECHO uno es igual a uno!) ELSE (ECHO Algo y un problema con este programa). Además, también hay variables integradas
% CD %% DATE %% TIME %% RANDOM%% CD% Se expande al directorio actual. Básicamente, la ruta detrás del primer>% DATE% y% TIME% son la fecha y la hora.% RANDOM% da un número aleatorio entre 0 y 32767. El rango no se puede cambiar, no lo creo. ¡Y eso es básicamente! Espero que hayas disfrutado de este instructivo, trabajé muy duro en él. Con suerte, compensará los 10 meses de ausencia. Ahora las malas noticias. Tendré algunos problemas para responder cualquier pregunta en los próximos meses, porque estaré fuera del país. Pero si tiene una pregunta, deje un comentario a cualquiera. Si tengo acceso a una computadora, me aseguraré de contestar, pero no creo que sea necesario; Instructables es una comunidad amigable y estoy seguro de que alguien te ayudará en tu difícil situación.
Recomendado:
Robot de seguimiento de línea avanzado: 22 pasos (con imágenes)
Robot de seguimiento de línea avanzado: este es un robot de seguimiento de línea avanzado basado en Teensy 3.6 y el sensor de línea QTRX que he construido y en el que he estado trabajando durante bastante tiempo. Hay algunas mejoras importantes en el diseño y el rendimiento de mi anterior robot de seguimiento de línea. T
Experimentos en el registro de datos avanzado (usando Python): 11 pasos
Experimentos en el registro de datos avanzado (usando Python): Hay muchos instructivos de registro de datos, así que cuando quise construir un proyecto de registro por mi cuenta, miré a mi alrededor en un montón. Algunas eran buenas, otras no tanto, así que decidí tomar algunas de las mejores ideas y hacer mi propia aplicación. Este resu
Seguimiento: Centro multimedia avanzado con Odroid N2 y Kodi (compatibilidad con 4k y HEVC): 3 pasos
Seguimiento: Centro multimedia avanzado con Odroid N2 y Kodi (compatibilidad con 4k y HEVC): este artículo es una continuación de mi artículo anterior bastante exitoso sobre la construcción de un centro multimedia versátil, basado al principio en el muy popular Raspberry PI pero más tarde, debido a la falta de salida compatible con HEVC, H.265 y HDMI 2.2, se cambió
Modelo avanzado de computadora de vuelo de cohetes: 4 pasos (con imágenes)
¡Computadora de vuelo de cohete modelo avanzado !: ¡Necesitaba una computadora de vuelo de cohete modelo de alta gama para mi nuevo cohete que se controlaba a sí mismo sin aletas! ¡Así que construí el mío! La razón por la que decidí construir esto fue porque construyo cohetes TVC (control vectorial de empuje). Esto significa que hay
Colgante LED avanzado: 4 pasos
Colgante LED avanzado: en este instructivo te mostraré cómo puedes hacer tu propio colgante LED. Deberías revisar mi instructable colgante LED anterior, muestro algunos consejos geniales allí. ¿Las joyas son parte de la belleza? Lo averiguaremos