¿Qué son los archivos bat y por qué son necesarios? Uso de archivos por lotes para Windows

En este artículo, veremos dos formas de crear un archivo bat: usando el Explorador y usando el Bloc de notas. Esto será suficiente para crear nuevos archivos bat, pero primero decidamos para qué sirven. En pocas palabras, el archivo bat es necesario para escribir un conjunto de comandos una vez línea de comando de Windows y luego ejecutarlos en cualquier momento sin escribir cada vez. En general, una opción ideal para administradores de sistemas y/o vagos. =)

Iré directo al grano:

Método uno. Nosotros creamos archivo bat V " Conductor»

Permítanme hacer una reserva de inmediato de que para este método es necesario que haya Visualización habilitada de extensiones de archivos en el Explorador.. Esto es conveniente en muchos casos y no entiendo por qué esta función está deshabilitada de forma predeterminada en Windows.

Cambiando su extensión(lo que hay después del último punto) en .bat:

Después de presionar Enter, Windows preguntará “Después de cambiar la extensión, es posible que ya no se pueda acceder a este archivo. ¿Haz el cambio?" Bueno, ¡por supuesto “Sí”! Esto es exactamente lo que intentamos lograr: cambiar la extensión .txt a .bat:

¡Voilá! Recibimos un "archivo por lotes", es decir. un archivo ejecutable en el que puede ingresar comandos que se ejecutarán cuando se inicie:

Método dos. Nosotros creamos archivo bat V " Bloc»

Para crear un archivo bat usando " Bloc", Necesitar abrir el bloc de notas(o cualquier archivo de texto en el Bloc de notas) y use el menú " Archivo", opción "":

Se abrirá una ventana para guardar archivos. Es importante considerar 2 cosas aquí:

  1. « Tipo de archivo» debe mostrarse en Todos los archivos (*.*)
  2. « Nombre del archivo"debe tener la extensión .bat

Buscamos donde guardamos (para encontrarlo más tarde) y pulsamos el botón “ Ahorrar»:

Total:

Cualquiera de estos métodos tiene sentido si tiene derechos de administrador. Pero el primero requiere configuraciones adicionales (que todavía recomiendo cambiar y aplicar).

Ahora es el momento de considerar comandos de murciélago. Básicamente, aquí se utilizan los comandos ingresados ​​en cmd, pero también hay algunos que no tiene sentido usarlos en la línea de comandos.

Cómo obtener una lista completa de comandos bat

Para describir todos los comandos, necesitará escribir una serie completa de artículos, para no sobrecargarlo, nos limitaremos a un artículo y consideraremos información compacta. Como sabes, el archivo bat y los comandos cmd son los mismos para obtener una lista de ellos o . Ingresa el comando de ayuda, que en inglés se escribe como ayuda, presiona Enter. Como resultado, la computadora escribirá todos los comandos con una breve descripción en la interfaz cmd.

Después de revisar esta lista, querrás saber con más detalle qué es un comando bat específico. Por ejemplo, seleccionemos el comando for, para describirlo ingresaremos ayuda para o para /? y haga clic en entrar. Como resultado, recibirá ayuda en línea para el comando. Es voluminoso, por lo que deberá presionar cualquier tecla varias veces para leer la descripción siguiente. De esta manera puedes aprender la sintaxis de un comando en particular.

comandos de archivo bat

Ahora conozcamos los comandos utilizados en el archivo por lotes, con una breve descripción. No distinguen entre mayúsculas y minúsculas; sin embargo, las hemos enumerado en mayúsculas para ayudar con la identificación.

@ Todos los comandos ejecutados por bat se muestran en la pantalla; para eliminar cosas innecesarias, se coloca un "perro" delante del comando. A menudo se usa con @echo desactivado.
colocarEstablece variables. Por ejemplo, setper=c:\windows aquí asigna la ruta. Puede escribir un valor engorroso en una variable y especificarlo en el script, lo que hace que el código sea más compacto. Si su contenido cambia, no tendrá que cambiar los valores en todos los lugares donde se proporciona esta variable.
:: Uno de los dos métodos para comentar en un archivo bat sin mostrar esta línea en la pantalla.
:ETIQUETACuando agrega dos puntos a una palabra, se crea una etiqueta que le permite saltar a diferentes secciones del cuerpo del archivo. Una etiqueta puede tener un nombre diferente, ETIQUETA es un ejemplo.
LLAMARBat es un comando que llama a un archivo por lotes dentro de otro. Todos los parámetros descritos en uno de los archivos se pueden pasar entre sí.
ELECCIÓNSeleccione el comando.
CLSBorra el contenido del shell que se muestra encima de CLS.
ECOMuestra un mensaje en la pantalla. Por ejemplo, "¡ECHO Hola!" mostrará "¡Hola!" Si no desactiva @ECHO al principio del archivo por lotes, verá la ruta al archivo bat y dos mensajes, lo cual es innecesario. Puede crear una línea vacía escribiendo ECHO. con un punto al final.
SALIDAFinaliza el script por lotes actual.
IR A ETIQUETASe utiliza para saltar a una etiqueta específica, en este caso ETIQUETA, y ejecutar el script que sigue.
SIAl igual que en los lenguajes de programación bat, el comando if representa el cumplimiento de una condición, dependiendo de qué script irá por un camino u otro. Consulte la ayuda para conocer la sintaxis.
paraUn bucle utilizado para organizar las mismas acciones una y otra vez.
PAUSASi necesita ver el resultado de un script, se ejecuta y la ventana se cierra rápidamente, utilice PAUSA. Le permitirá ver el resultado y completar el script presionando cualquier botón.
MOVIMIENTO RÁPIDO DEL OJO.Segunda forma de comentar. A diferencia de:: se imprime en la pantalla si no hay una construcción @ECHO desactivada.
CAMBIOCambia la posición de los parámetros del lote en el archivo bat.
COMENZARLanza programas, ventanas, etc. Tiene muchos atributos (ver ayuda).

Ésta es la base de los comandos de murciélago. La sintaxis de algunos elementos resulta difícil para los principiantes y requiere ciertos conocimientos. Todo comandos de archivo bat, descritos anteriormente, se consideran superficialmente para conocer su propósito, y encontrará la sintaxis completa en la Ayuda de Windows.

Muchos redactores técnicos necesitan automatizar el procesamiento de archivos de vez en cuando. A veces hablamos de procesar una sola vez una gran cantidad de archivos, a veces hablamos de realizar sistemáticamente las mismas acciones, por ejemplo, cuando se utilizan tecnologías DocBook o DITA). Procesar cada archivo con un comando manual independiente no sólo lleva tiempo, sino que también provoca errores difíciles de identificar que surgen debido a la natural falta de atención del operador.

En el sistema operativo MS-DOS y en todos los sistemas operativos de la familia Microsoft Windows, la forma más sencilla de automatizar el procesamiento de archivos (y directorios) son los llamados archivos por lotes. Digamos de inmediato que los archivos por lotes no son el único medio para automatizar el trabajo del usuario, ni siquiera entre los integrados. En los sistemas operativos de la familia Microsoft Windows, a partir de la versión 98, también existe un Windows Script(ing) Host. Además, nadie nos prohíbe utilizar algún lenguaje interpretado para estos fines, digamos Perl, Python o Ruby. Sin embargo, las herramientas enumeradas, aunque potentes, requieren habilidades de programación, es decir. componer y, lo más importante, depurar programas, al menos a un buen nivel amateur. El uso de archivos por lotes es accesible para cualquier persona sin especial atención y sentido común;

Nota IMPORTANTE. Un libro de referencia completo o incluso un libro de texto bien escrito sobre comandos de MS-DOS y el desarrollo de archivos por lotes tendría que describir los numerosos matices asociados con el uso de varios parámetros, las peculiaridades del funcionamiento de archivos por lotes en diferentes versiones de Microsoft. Ventanas, etc. etcétera. El artículo propuesto no pretende ser completo, en particular:

  • no describiremos diferentes formas de lograr el mismo resultado;
  • No describiremos todas las posibilidades y usos de los comandos mencionados.

Ahora nuestra tarea es ayudar a aquellos que no están completamente familiarizados o casi con esta herramienta a comenzar a dominar archivos por lotes. Luego podrá leer todos los detalles en la documentación de la empresa o en los libros de referencia.

Procesador de comando

Muchos sistemas operativos, incluidos los desarrollados por Microsoft, incluyen un procesador de comandos. Este es el nombre de un programa que inicia la ejecución de diversas acciones en respuesta a comandos ingresados ​​por el usuario desde el teclado. Básicamente, estas acciones consisten en ejecutar los programas necesarios con determinados parámetros. Pero no solo; Más adelante veremos que algunos comandos los ejecuta directamente el procesador de comandos. Básicamente, estos son los comandos que sirven para controlar el contexto y la secuencia de ejecución del comando. Sin embargo, no pensaremos demasiado en la naturaleza de los comandos, al menos a menos que sea necesario. Más importante aún, cualquier programa que sea técnicamente posible ejecutar desde la línea de comandos es considerado por el procesador de comandos como un comando. No diferencia entre los comandos nativos que se integraron originalmente en el sistema operativo y los programas que se instalaron encima de él.

Para iniciar el procesador de comandos:

  1. Haga clic en el botón Comenzar. El menú principal se mostrará en la pantalla.
  2. Seleccione Ejecutar en el menú principal. Aparecerá un cuadro de diálogo en la pantalla. Iniciando el programa.
  3. En el campo Abrir, ingrese la cadena cmd.
  4. Haga clic en el botón DE ACUERDO. Aparecerá una ventana del procesador de comandos en la pantalla.

Línea de comando y comandos

La ventana del procesador de comandos en su forma original parece sombría y trabajar con ella no es muy conveniente para la mayoría de las personas. Es mucho más fácil utilizar administradores de archivos estilo Norton Commander. Proporcionan herramientas para navegar rápidamente por el sistema de archivos y un límite de tiempo para ingresar comandos.

Para ingresar el comando:

  1. Escriba el texto del comando en la línea de comando.
  2. Presione la tecla Ingresar.

Los comandos del procesador de comandos y del sistema operativo se describen en la documentación operativa de este último. Esta documentación está parcialmente contenida dentro del propio sistema operativo. Para acceder a él utilice el comando ayuda. Este comando muestra una lista de comandos disponibles. Para obtener una descripción de un comando específico, use el comando como parámetro ayuda se debe indicar su nombre. La línea de comando que se muestra en el siguiente listado muestra una descripción del comando para.

Ayuda para

Si intentaste ingresar el comando ayuda, probablemente hayas notado que el resultado de su trabajo (el llamado resultado) no cabe en una pantalla. El mismo problema ocurre con el texto de descripción del comando. para. La buena noticia es que la salida se puede redirigir a un archivo. La línea de comando que se muestra en el siguiente listado genera el archivo comandos.txt, que contiene una lista de todos los comandos de MS-DOS.

Ayuda > comandos.txt

Para generar un archivo con una descripción del comando para, debe dar el siguiente comando (puede hacer que el nombre del archivo de salida sea cualquier cosa).

Ayuda para > para.txt

En total, hay algo menos de 80 comandos en los sistemas operativos modernos de Microsoft y es imposible describirlos en un artículo. Aquí sólo podemos mencionar algunos comandos útiles para automatizar el procesamiento de archivos y mostrar cómo usarlos. Estos comandos se utilizarán en más ejemplos. Siempre puedes aclarar los detalles por comando. ayuda o en el directorio.

Copiar— copiar uno o más archivos;

del— eliminar uno o más archivos;

mover— mover uno o más archivos o directorios;

rebautizar(abreviado ren) - cambiar el nombre de uno o más archivos o directorios;

xcopiar— copiar el árbol de subdirectorios;

mkdir(abreviado Maryland) — crear un directorio;

rmdir(abreviado tercero) — eliminar un directorio.

Una de las reglas generales de la sintaxis de comandos de MS-DOS es que al especificar parámetros, primero se especifica la fuente y primero el resultado. Por ejemplo, si queremos mover un archivo cerveza.txt del catalogo caja al catalogo mesa, debemos ingresar el comando que se proporciona en el siguiente listado.

Mover tabla box\beer.txt

Primero qué mover, luego hacia dónde moverse.

Si queremos cambiar el nombre del archivo lena.txt archivar natasha.txt, entonces el comando debe escribirse como se muestra a continuación.

Ren lena.txt natasha.txt

Primero, qué cambiar de nombre y luego qué cambiar de nombre.

Directorio actual. Caminos absolutos y relativos

Cuando se trabaja con comandos de archivos, el concepto de directorio actual se vuelve extremadamente importante. El punto es que cuando especificamos un archivo como parámetro de comando, siempre usamos una de dos formas posibles para señalarlos: una ruta absoluta o una ruta relativa. En la ruta completa especificamos todo lo que comienza con la unidad (o el nombre de red de la computadora), por ejemplo d:\misha\box\cerveza.txt. Cualquiera que sea el directorio actual cuando se ingresa el comando, la ruta completa corresponderá al mismo archivo. Para una ruta relativa, el directorio actual sirve como punto de partida. El caso más simple de una ruta relativa es el nombre de un archivo. En el contexto de la ejecución de comandos, significa un archivo con ese nombre ubicado en el directorio actual.

Para escribir una ruta relativa al directorio actual, hay una entrada condicional . (punto). Para registrar la ruta relativa al directorio que contiene el directorio actual, existe una notación condicional .. (dos puntos). El comando que se muestra en la siguiente lista copia todos los archivos del directorio actual al directorio vecino, situado junto a él.

Copiar *.* .\vecino

Archivos por lotes

Hasta ahora, al dar ejemplos, asumíamos que ingresábamos comandos manualmente cada vez. Cuando se procesa una gran cantidad de archivos o se ejecutan sistemáticamente los mismos comandos, esto resulta engorroso. Por lo tanto, el procesador de comandos brinda la capacidad de ejecutar archivos de comandos. Un archivo por lotes es un archivo de texto en el que se escriben comandos (o al menos un comando). En el siguiente listado se muestra un archivo por lotes de ejemplo. Intente adivinar qué hace este archivo por lotes.

Ayuda copiar > copiar.ayuda ayudar a mover > mover.ayuda md msdos-ayuda mover *.ayuda msdos-ayuda

Si el propósito de este archivo sigue siendo un misterio para usted, intente crearlo y ejecutarlo. Es habitual dar a los archivos de comando la extensión murciélago. Así es como el procesador de comandos reconoce los archivos de este tipo. Este archivo se puede llamar, por ejemplo, hacer-ayuda.bat.

Para ejecutar el archivo por lotes:

  1. Ingrese su nombre como comando. Después de esto, se ejecutará el archivo por lotes.

En un archivo por lotes, cada comando ocupa una línea. Más precisamente, hay una manera de colocar un comando en varias líneas consecutivas, para hacer esto, inmediatamente antes de cada salto de línea debes colocar el símbolo “cap”; ^ . (Cada mayúscula debe ser el último carácter de su línea; no debe haber espacios ni tabulaciones después). En el siguiente listado se muestra un ejemplo de dicho comando.

Si existe disser.txt ^ copie disser.txt ^ d:\science\papers\drafts\sources

Pero en aras de la simplicidad, para no hacer reservas cada vez, asumiremos que, en cierto sentido, se trata de una línea "lógica" larga.

Cuando se ejecuta un archivo por lotes, el procesador de comandos lo escanea de arriba a abajo, desde la primera línea hasta la última, y ​​ejecuta los comandos en el orden en que los encuentra. Los realiza en general como si introdujéramos cada uno de ellos manualmente. En general, porque algunos comandos se comportan de manera ligeramente diferente cuando se ingresan manualmente y cuando se ejecutan desde un archivo por lotes.

De cara al futuro, digamos que, si es necesario, la secuencia de ejecución del comando se puede cambiar mediante comandos de control (lo que puede causar tal necesidad es una cuestión aparte).

No confunda el directorio actual con el directorio en el que se encuentra el archivo por lotes que se ejecutará. Supongamos que el directorio actual es trabajar, contiene un directorio herramientas y el directorio de herramientas almacena archivos por lotes. Ejecutas uno de ellos con el comando. herramientas\recopilar-imagenes.bat. Entonces, "desde el punto de vista" de este archivo de comando, el directorio actual seguirá siendo trabajar, pero no herramientas.

Comentar el archivo por lotes y su salida. comandos echo y rem

Un archivo por lotes es esencialmente un programa escrito en el lenguaje del procesador de comandos del sistema operativo. El texto del programa debe estar provisto de comentarios para que, cuando vuelva a leerlo más tarde, no tenga que recordar dolorosamente por qué es necesario este programa y cómo funciona.

El sistema de comando MS-DOS proporciona un comando para crear comentarios: movimiento rápido del ojo. Este es un comando ficticio que no implica realizar ninguna acción, pero le permite escribir texto arbitrario en la línea después de su nombre. Además, el procesador de comandos no lo percibe como un error de sintaxis. En la siguiente lista se muestra un ejemplo de cómo formatear un archivo de comando con comentarios.

Rem ************************************************* **** rem Generación de archivos de ayuda usando los comandos copiar y mover rem ************************************* * ******************* rem Crear archivos de ayuda help copy > copy.help help move > move.help rem Crear un directorio para almacenar archivos de ayuda md msdos-help rem Mover archivos de ayuda al directorio preparado, mueva *.help msdos-help

Observe las líneas vacías que dividen el archivo por lotes en "párrafos". Este sencillo truco le permite hacer que un archivo por lotes sea más legible.

Al ejecutar el archivo por lotes anterior, todos los comandos se mostrarán en la pantalla a medida que se ejecutan, lo que no siempre es conveniente. La emisión de comandos se puede desactivar usando el comando @eco apagado. El símbolo del "perro" delante del comando eco Esto significa que este comando debe ejecutarse en modo "silencioso". Es mejor que no usemos la línea de comando eco apagado, pero coloque un "perro" delante de cada comando.

En muchos casos, desea que un archivo por lotes muestre ciertos mensajes en la pantalla (o en un archivo). En algunos casos, estos pueden ser mensajes de error, en otros, mensajes informativos que explican al usuario del archivo por lotes lo que está sucediendo en el momento en que creamos algún otro archivo útil con el archivo por lotes. El mismo comando echo se utiliza para mostrar mensajes. Se le pasa como parámetro el texto del mensaje que se va a mostrar. La lista del archivo por lotes mejorado se proporciona a continuación.

@echo apagado rem ********************************************** ******** ******* rem Generación de archivos de ayuda usando los comandos copiar y mover rem ************************ ********* ********************** @echo Generando archivos de ayuda. Sólo un segundo... rem Crea los archivos de ayuda help copy > copy.help help move > move.help rem Crea un directorio para almacenar los archivos de ayuda md msdos-help rem Mueve los archivos de ayuda al directorio preparado move *.help msdos -ayuda echo ¡Listo!

Pasar parámetros a un archivo de comando

Digamos que queremos crear un archivo por lotes que primero genere ayuda para describir un comando especificado por el usuario y luego lo cargue en el Bloc de notas para verlo. El truco consiste en decirle de alguna manera la próxima vez que ejecutemos el archivo por lotes qué comando nos interesa esta vez.

Para resolver este problema, se proporciona un mecanismo de procesamiento de parámetros. Funciona de forma bastante sencilla. Si, al ejecutar un archivo por lotes, el usuario especificó varios parámetros, en el texto del archivo por lotes indicamos el primero de ellos con la entrada %1 , segunda entrada %2 , tercera entrada %3 etc. Usamos estas notaciones en el texto del archivo de comandos de la misma manera que usamos pronombres en el habla natural.

El texto del archivo de comando que resuelve el problema se muestra en el siguiente listado. Presta atención al comando. ayuda. El primer parámetro del archivo de comando se le pasa como parámetro.

@echo off rem Creamos un archivo con una descripción del comando rem cuyo nombre se pasa por el parámetro help %1 > help.tmp rem Cargamos el archivo de descripción en el editor de Notepad notepad help.tmp

Supongamos que le damos a este archivo por lotes el nombre mostrar-ayuda.bat. Para cargar una descripción de comando en un bloc de notas, por ejemplo, directorio, tenemos que ingresar el comando de la siguiente manera.

Mostrar-help.bat directorio

El siguiente archivo de comando crea un directorio con el nombre especificado en el primer parámetro y escribe en él un archivo que contiene el texto que describe el comando especificado en el segundo parámetro.

Rem Un ejemplo de un archivo de comando con dos parámetros rem Cree un directorio con el nombre especificado por el primer parámetro md %1 rem Cree un archivo en él con una descripción del comando rem especificado por el segundo parámetro help %2 > %1\ %2.ayuda

¿Qué sucede si el usuario especifica cuatro parámetros en lugar de dos al ejecutar este archivo por lotes? Está bien, no interferirán con nada, simplemente no se usarán. ¿Qué sucede si el usuario especifica solo el primer parámetro? El segundo parámetro estará vacío. El efecto será el siguiente: se ejecutará el archivo por lotes, pero como si estuviera en lugar de la grabación. %2 no hay nada. El comando de ayuda generará una lista de todos los comandos y la colocará en un archivo con un nombre vacío y la extensión .help. Si el usuario ejecuta este archivo sin especificar ningún parámetro, cuando el procesador de comandos intenta ejecutar el comando Maryland(recuerde, esto es para crear un directorio), obtendremos un error de sintaxis porque el comando md debe tener un parámetro.

Por lo tanto, el uso de parámetros crea grandes oportunidades, pero puede complicar significativamente las cosas. Para que el archivo por lotes funcione siempre correctamente, es necesario verificar la exactitud de los parámetros especificados por el usuario y responder de alguna manera a los datos de entrada incompletos o incorrectos. Por supuesto, no puede hacer esto, pero un archivo por lotes que funcione incorrectamente puede causar problemas, especialmente si implica eliminar o sobrescribir datos.

Variables. establecer comando

Una variable es un valor con nombre. En los libros de texto de programación, una variable generalmente se compara con un sobre con un nombre escrito en él. Puede poner algo dentro del sobre, por ejemplo, una cierta cantidad de dinero; este es su valor. Al igual que con el sobre, el valor de la variable se puede cambiar.

Para declarar una variable y al mismo tiempo asignarle un valor, use el comando colocar. Un ejemplo de este comando se muestra en el siguiente listado.

Rem Compilador de archivos de ayuda en formato CHM set help_compiler=c:\HTML Help Workshop\hcc.exe

Para extraer el valor de una variable, su nombre se coloca entre dos signos de porcentaje, como se muestra a continuación.

Rem Compilador de archivos de ayuda en formato CHM set help_compiler=c:\HTML Help Workshop\hcc.exe rem Archivo de ayuda del proyecto del módulo "Warehouse" set store_hpj=help\sources\store\store.hpj rem Archivo de ayuda del proyecto del " Módulo de ventas " set sales_hpj=help\sources\sales\sales.hpj rem Compilar archivos de ayuda %help_compiler% %store_hpj% %help_compiler% %sales_hpj%

La siguiente lista muestra por qué las variables son útiles.

En primer lugar, le permiten utilizar un fragmento corto sinónimo de él dentro de un archivo por lotes en lugar de un fragmento largo (por ejemplo, la ruta al compilador del archivo de ayuda). Al menos es conveniente.

En segundo lugar, le permiten evitar la repetición en el texto del archivo de comando de fragmentos que pueden cambiar en el futuro. Imagine que reinstalamos Microsoft HTML Workshop en un directorio diferente. Si se utiliza una variable en un archivo por lotes para registrar la ruta a ella, será suficiente corregir solo una línea en el archivo por lotes, es decir, aquella en la que se asigna el valor de la variable. ayuda_compilador. Si escribiéramos la ruta al compilador cada vez que fuera necesario llamarlo, luego de cambiar la ruta tendríamos que corregir cada una de esas líneas. En el ejemplo dado hay dos, pero en un proyecto real podrían fácilmente haber cinco o quince, dependiendo del número de archivos de ayuda que queramos compilar. El problema no es que corregir manualmente cada línea sea difícil (después de todo, nadie ha cancelado los comandos "copiar" y "pegar"), sino que esto aumenta enormemente la probabilidad de un error accidental.

Los parámetros del archivo por lotes también son variables, pero se diferencian de las variables ordinarias en que sus valores se establecen cuando se inicia el archivo por lotes. En el futuro, cuando hablemos de variables, especialmente de trabajar con sus valores, también nos referiremos a los parámetros del archivo de comandos, al menos en ausencia de reservas explícitas al respecto.

Al escribir archivos por lotes, se suele utilizar la siguiente técnica: se indican varios valores de variables uno al lado del otro (o se intercalan con algunos símbolos o líneas), para obtener algún nuevo valor significativo. En el siguiente listado se muestra un ejemplo.

Rem Ruta al compilador del archivo de ayuda set help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe" rem Ruta al directorio en el que se encuentran los proyectos del archivo de ayuda set project_path=e:\work\projects\help- proyectos rem Llamamos al compilador para procesar un proyecto específico, rem cuyo nombre se pasa en el primer parámetro %help_compiler% %project_path%\%1.hpj

Consultando condiciones y seleccionando opciones. comandos if y goto

El comando if le permite seleccionar grupos de comandos en un archivo por lotes que se ejecutan o no según ciertas condiciones. ¿Para qué sirve?

La verificación de condiciones es casi un paso necesario al crear archivos por lotes que utilizan parámetros. Antes de comenzar a trabajar, el archivo por lotes generalmente debe asegurarse de que se le pase el conjunto correcto de parámetros. De lo contrario, existe un alto riesgo de que se ejecute de forma incorrecta o ineficaz, y el usuario sólo quedará preguntándose cuál es el problema. Además, si un archivo por lotes elimina, mueve o sobrescribe datos, incluso puede causar daños si los parámetros son incorrectos.

La siguiente lista muestra el archivo de comando de compilación del archivo de ayuda con el que ya está familiarizado. Se ha agregado una verificación de que el primer parámetro no esté vacío al principio del archivo de comando. Tenga en cuenta esta característica de sintaxis: la operación de comparación utiliza un doble signo igual. Si el primer parámetro no está vacío, se ejecuta el comando goto, que "arroja" el shell a la etiqueta especificada. En este caso, el nombre de esta etiqueta es compilar. Tenga en cuenta que cuando aparece una etiqueta, su nombre está precedido por dos puntos, pero en el comando goto no es así. Si el primer parámetro está vacío, el shell pasa a la siguiente línea, lo que produce un mensaje de error. Y luego al siguiente, que lo transfiere al final del archivo a una etiqueta con el nombre finalizar.

@echo off rem Comprobamos si el parámetro está especificado, en caso contrario "%1"=="" goto compile rem Si el parámetro está vacío, emitimos un mensaje de error echo El nombre del proyecto del archivo de ayuda rem no está especificado y vamos a el final del archivo de comando rem hasta el final goto etiqueta terminar rem Esta es una etiqueta llamada compilar: compilar rem A continuación se muestran los comandos de compilación rem Ruta al archivo de ayuda compilador set help_compiler="c:\Program Files\HTML Help Workshop\hhc .exe" rem Ruta al directorio donde se encuentran los proyectos de ayuda archivos set project_path=e:\work\projects\help-projects rem Llame al compilador para procesar un proyecto específico, rem cuyo nombre se pasa en el primer parámetro %help_compiler% %project_path%\%1.hpj rem Esta es una etiqueta llamada terminar: terminar

Seamos realistas, el método propuesto para comprobar un parámetro no es el más exitoso.

En primer lugar, si el usuario especifica por error el nombre de un archivo inexistente como parámetro, el archivo por lotes quedará satisfecho con esto e intentará compilarse. Una mejor manera es comprobar si dicho archivo realmente existe. Para ello, el lenguaje de comandos de MS-DOS proporciona una palabra especial existir. Por tanto sería mejor escribir: si existe %1.hpj ir a compilar.

En segundo lugar, uso activo del comando. ir a(el llamado salto incondicional) y las etiquetas confunden mucho el código. Técnicamente, no son malos, pero depurar y mantener un archivo por lotes escrito en este estilo es bastante inconveniente. Por lo tanto, los programadores han considerado durante mucho tiempo que el salto incondicional es una técnica indeseable. A continuación se muestra una versión estructurada más correcta, desde el punto de vista del estilo de programación, que utiliza la construcción si... si no. Funciona así: si la condición es verdadera, los comandos entre paréntesis después si, y si es falso, entre paréntesis después demás.

@echo off rem Compruebe si el parámetro está configurado si no existe %1.hpj (rem Si el parámetro está vacío, mostramos un mensaje de error echo Este proyecto de archivo de ayuda no existe.) else (rem A continuación se muestran los comandos de compilación rem Ruta al compilador de archivos de ayuda set help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe" rem Ruta al directorio en el que se encuentran los proyectos del archivo de ayuda set project_path=e:\work\projects\help-projects rem Llame al compilador para procesar un proyecto específico, rem cuyo nombre se pasa en el primer parámetro %help_compiler% %project_path%\%1.hpj)

Preste atención a la sangría del borde izquierdo. Son opcionales, pero hacen que el texto del archivo por lotes sea más legible.

Pongamos otro ejemplo de cómo trabajar con cheques. El siguiente archivo por lotes crea un directorio llamado archivos de ayuda(supongamos, cargar archivos de ayuda compilados en él). Además, si ya existe un directorio con el mismo nombre (y probablemente contiene archivos de ayuda antiguos que no querrás perder: ¿qué pasa si los nuevos resultan peores?), el archivo por lotes le asigna la extensión bak. . Pero si el directorio archivos-de-ayuda.bak ya existía, entonces el archivo por lotes lo elimina (asumiremos que una copia de seguridad es suficiente para nosotros).

Si existen archivos de ayuda.bak rd archivos de ayuda.bak si existen archivos de ayuda ren archivos de ayuda archivos de ayuda.bak md archivos de ayuda

Procesamiento masivo de archivos. para comando

El comando for le permite organizar la ejecución de acciones repetidas del mismo tipo. Puede usarlo para mostrar los números del uno al diez, como se muestra en la siguiente lista.

Para /l %%i en (1,1,10) haga eco de %%i

Variable i llamado contador de bucle. Debido a la sintaxis única del comando para, el nombre del contador de bucle debe constar de una letra. Además, si estamos escribiendo un archivo por lotes, entonces debemos poner un signo de doble porcentaje delante del nombre del contador de bucle, pero si solo estamos escribiendo un comando en la línea de comando, entonces uno solo.

La lógica de este comando es la siguiente. después de la palabra en Se indica el rango de cambio del contador de ciclos. En esta versión del comando, se trata de un triple de números: el valor inicial del contador, el paso de conteo, el valor límite del contador. Al ejecutar un comando, el shell primero asignará la variable i significado 1 , y luego en cada paso del ciclo lo aumentará en 1 hasta que supere 10 . Obviamente, habrá diez pasos de este tipo. Si especificamos un número como paso de conteo 2 , entonces el bucle se ejecutaría cinco veces. En cada paso del bucle, se ejecuta el cuerpo del bucle escrito después de la palabra. hacer. En el ejemplo anterior, este es el comando echo, que muestra el valor actual del contador de bucle.

Probablemente puedas pensar en una situación en la que algo como esto sea realmente necesario, pero normalmente el comando para Se utiliza para iterar y procesar archivos. Hay que decir que en casos bastante simples, el procesamiento masivo de archivos se realiza mediante comodines. Si queremos reemplazar todos los archivos en el directorio actual con la extensión .htm en .html, ingresamos el comando ren *.htm *.html. Pero si es necesario hacer lo mismo no en un directorio, sino en un árbol de directorios, entonces no puede prescindir del comando for. El siguiente archivo por lotes realiza esta operación para todos los archivos htm en el subdirectorio del sitio web del directorio actual. Más precisamente, en todo el árbol de directorios que se encuentra dentro sitio web.

Para el sitio web /r %%i en (*.htm) haga ren %%i %%~ni.html

Llave /r indica la necesidad de recorrer el directorio sitio web y todo su interior. Si no lo especifica (pero no se le permite especificar un directorio), solo se procesarán los archivos del directorio actual. El rango de valores del contador de bucle en esta variante de comando es el conjunto de todos los archivos con la extensión .htm, ubicado dentro de un directorio (más precisamente, un árbol) sitio web. Una entrada extraña a primera vista. ~ni significa que a partir del valor de la variable i Sólo necesita seleccionar el nombre del archivo. El lenguaje de comandos de MS-DOS proporciona varios modificadores de este tipo, por ejemplo, escribir ~xi denota la extensión del archivo. Todos los modificadores se describen en la ayuda del comando. para.

El cuerpo de un bucle puede constar de varios comandos entre paréntesis.

@echo desactivado para el sitio web /r %%i en (*.htm) do (rem Imprime el nombre del archivo echo %%i rem Cambia el nombre del archivo ren %%i %%~ni.html)

Transferir el control a otro archivo por lotes. comando de llamada

Es posible llamar a otro archivo por lotes desde un archivo por lotes. El comando para esto es llamar. Genial, las variables especificadas en el archivo por lotes que realiza la llamada son "visibles" para la persona llamada. Y viceversa, después de que el archivo llamado termine su trabajo y devuelva el control a la persona que llama, este último "verá" las variables que le dejó la "herencia" llamada. Esto permite al desarrollador de archivos por lotes hacer algo como esto: Si varios archivos de comando deben usar los mismos valores, por ejemplo, rutas a algunos archivos, se pueden colocar en un archivo de comando separado, que desempeñará el papel de un archivo de configuración. Cada archivo de comando en funcionamiento comenzará con una llamada al archivo de configuración. El beneficio es que al cambiar las rutas, sólo tiene que realizar cambios en un archivo de configuración y no en muchos trabajadores.

Archivo por lotes "Configuración" config.bat.

Rem Ruta al compilador del archivo de ayuda set help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe" rem Ruta al directorio en el que se encuentran los proyectos del archivo de ayuda set project_path=e:\work\projects\help- proyectos

Archivo por lotes "en funcionamiento".

@echo off rem Configurar variables llamar a config.bat rem Verificar si el parámetro está configurado si no existe %1.hpj (rem Si el parámetro está vacío, mostramos un mensaje de error echo Este proyecto de archivo de ayuda no existe.) else ( rem A continuación se muestran los comandos de compilación rem Llamamos al compilador para procesar un proyecto específico, rem cuyo nombre se pasa en el primer parámetro %help_compiler% %project_path%\%1.hpj)

Un archivo BAT es un código de programa guardado con la extensión .bat o .CMD, según prefiera.

Las posibilidades de los archivos bat son casi ilimitadas, pero por regla general los programadores utilizan estas extensiones en asuntos simples y rutinarios.

Con un archivo bat, puede abrir archivos en su computadora, copiar, mover y eliminar archivos con o sin máscara, ejecutar scripts de programas de terceros y abrir un navegador con la URL deseada. A menudo utilizo este tipo de archivos para abrir carpetas ftp en un servidor remoto.

Cómo crear un archivo bat

Crear archivos baht no podría ser más sencillo. Abra un editor de texto normal y guárdelo con la extensión .bat.

También puedes utilizar el programa avanzado “notepad++”

Aquí hay un código de muestra para escribir un archivo bat:

explorer.exe "C:\Archivos de programa"

Este código abrirá la carpeta "archivos de programa" en la unidad C:\

Escribir archivos .bat requiere especial cuidado por parte del usuario de la computadora. Dado que los archivos por lotes pueden eliminar directorios completos, formatee una partición de computadora

Aquí hay un ejemplo de código: formatear la partición F:\

@eco apagado
formato F /q /autotest

Ejemplo de código bat: cree 100 carpetas:

@eco apagado
para /l %%i en (1,1,100) haga mkdir "dir %%i"

Puede convertir un bat y (Virus) en un script de programa dañino: por ejemplo, el siguiente código eliminará archivos exe importantes.

@eco apagado
haga del "c:\windows\exploer.exe"
haga del "c:\windows\mspoint.exe"
haga del "c:\windows\notepad.exe"

Comando para crear una carpeta con un archivo bat

El siguiente código creará 3 carpetas en la ubicación donde se encuentra el archivo. Además, la primera carpeta creada contendrá otra subcarpeta. Dado que los nombres de las carpetas están escritos en cirílico, agregamos la línea de codificación chcp 1251. Un archivo de este tipo no se puede escribir con un bloc de notas normal, ya que no es posible cambiar la codificación de las letras rusas. Utilice el bloc de notas++.

CHCP 1251
MD .\carpeta_artículo\base\
MD .\directorio\
MD .\almacenamiento\

Descargar archivo Bat

- el archivo crea 3 carpetas

Ejemplo de código bat de cómo abrir una carpeta

explorer.exe "C:\Usuarios\Administrador\Escritorio\foto\"

¿Cómo abrir el formato bat?

Al igual que crear archivos .bat en un editor de texto, se pueden abrir con el mismo bloc de notas, wordpad o notepad++.

Lo único que debe recordar al abrir un archivo bat es que cuando haga doble clic en el archivo, se iniciará el programa. Es decir, para abrirlo para editarlo, mueva el cursor sobre el archivo que se está editando y haga clic derecho para abrir el menú contextual donde seleccione abrir con notepad++.

Además, si haces clic en simplemente abrir en el menú contextual, también iniciarás la ejecución del archivo bat.

Hay otra manera: abra el Bloc de notas del editor de texto y arrastre el archivo editado hacia él.

Importante: Los usuarios suelen confundir los conceptos de archivos con la extensión .bat y el cliente de correo "The Bat" para enviar y recibir documentos por correo.

Operadores básicos de archivos Bat

@ Todos los comandos ejecutados por bat se muestran en la pantalla; para eliminar cosas innecesarias, se coloca un "perro" delante del comando. A menudo se usa con @echo desactivado.
colocar Establece variables. Por ejemplo, setper=c:\windows aquí asigna la ruta. Puede escribir un valor engorroso en una variable y especificarlo en el script, lo que hace que el código sea más compacto. Si su contenido cambia, no tendrá que cambiar los valores en todos los lugares donde se proporciona esta variable.
:: Uno de los dos métodos para comentar en un archivo bat sin mostrar esta línea en la pantalla.
:ETIQUETA Cuando agrega dos puntos a una palabra, se crea una etiqueta que le permite saltar a diferentes secciones del cuerpo del archivo. Una etiqueta puede tener un nombre diferente, ETIQUETA es un ejemplo.
LLAMAR Bat es un comando que llama a un archivo por lotes dentro de otro. Todos los parámetros descritos en uno de los archivos se pueden pasar entre sí.
ELECCIÓN Seleccione el comando.
CLS Borra el contenido del shell que se muestra encima de CLS.
ECO Muestra un mensaje en la pantalla. Por ejemplo, “ECHO ¿Cómo estás?” mostrará "¡Cómo estás!" Si no desactiva @ECHO al principio del archivo por lotes, verá la ruta al archivo bat y dos mensajes, lo cual es innecesario. Puede crear una línea vacía escribiendo ECHO. con un punto al final.
SALIDA Finaliza el script por lotes actual.
IR A ETIQUETA Se utiliza para saltar a una etiqueta específica, en este caso ETIQUETA, y ejecutar el script que sigue.
SI Al igual que en los lenguajes de programación bat, el comando if representa el cumplimiento de una condición, dependiendo de qué script irá por un camino u otro. Consulte la ayuda para conocer la sintaxis.
para Un bucle utilizado para organizar las mismas acciones una y otra vez.
PAUSA Si necesita ver el resultado de un script, se ejecuta y la ventana se cierra rápidamente, utilice PAUSA. Le permitirá ver el resultado y completar el script presionando cualquier botón.
MOVIMIENTO RÁPIDO DEL OJO. Segunda forma de comentar. A diferencia de:: se imprime en la pantalla si no hay una construcción @ECHO desactivada.
CAMBIO Cambia la posición de los parámetros del lote en el archivo bat.
COMENZAR Lanza programas, ventanas, etc. Tiene muchos atributos.

Para obtener una descripción más detallada del código del archivo bat, lea la Ayuda de Windows

El uso de una interfaz gráfica en los sistemas operativos hoy en día parece ser algo dado por sentado y completamente natural, pero no siempre fue así. El primer sistema operativo, MS DOS, desarrollado por Microsoft, no tenía GUI y se controlaba mediante la introducción de comandos de texto. Han pasado casi 40 años desde entonces, pero el lenguaje de programación de línea de comandos sigue siendo popular, y no sólo entre los desarrolladores.

La línea de comando no es tan conveniente, pero con su ayuda puede realizar operaciones que no son posibles desde la GUI. Por otro lado, iniciar la consola cada vez, ingresar comandos uno tras otro, todo esto ralentiza enormemente el trabajo. Sin embargo, puede simplificar significativamente la tarea creando un archivo bat o simplemente un archivo por lotes: un archivo de texto con la extensión BAT que contiene una lista de instrucciones procesadas por el intérprete de comandos CMD. Estos archivos se utilizan para automatizar diversas tareas, por ejemplo, para eliminar archivos temporales según una programación o iniciar programas.

Cómo crear un archivo con extensión BAT

Entonces, ¿cómo crear un archivo bat en Windows 7/10? Muy simple. Para hacer esto, necesitará cualquier editor de texto y conocimientos de los conceptos básicos de la línea de comando. Puedes usar el Bloc de notas, o mejor aún, el Bloc de notas++, ya que este último tiene resaltado de sintaxis. Cree un nuevo archivo en el editor, seleccione "Guardar como" en el menú "Archivo", asigne un nombre al script futuro y seleccione "Archivo por lotes (*bat; *cmd; *nt)" en el menú desplegable "Tipo de archivo". -lista abajo.

Si desea utilizar el Bloc de notas para crear un archivo bat, debe asignar la extensión manualmente y seleccionar "Todos los archivos" en la lista "Tipo de archivo".

Como puede ver, crear un archivo con la extensión bat no es difícil, sin embargo, aquí hay algunas sutilezas; Los saltos de línea no se pueden utilizar en archivos de comandos; la codificación del archivo bat debe establecerse en UTF-8; si el cuerpo del script usa cirílico, la codificación debe cambiarse insertando el comando chcp 1251 en el lugar apropiado.

En lugar de la extensión BAT, puedes usar CMD, el resultado de ejecutar el script será exactamente el mismo.

Comandos básicos, sintaxis y ejemplos de uso de archivos por lotes

Ya sabes cómo crear un archivo bat, ahora es el momento de la parte más interesante, es decir, la sintaxis del lenguaje intérprete CMD. Está claro que un archivo por lotes vacío no funcionará, ni siquiera se iniciará cuando haga doble clic en él. Para que el script funcione, se debe escribir al menos un comando en él. Para ver un ejemplo visual, veamos cómo escribir un archivo bat para iniciar programas. Digamos que cuando empiezas a trabajar, inicias tres programas cada vez: Chrome, Firefox y VLC. Simplifiquemos la tarea creando un script que inicie estos programas en intervalos de cinco segundos.

Abra un archivo por lotes vacío y pegue los siguientes comandos en él:

Inicio "" "C:/Archivos de programa/Google/Chrome/Application/chrome.exe" tiempo de espera /t 05 inicio "" "C:/Archivos de programa/Mozilla Firefox/firefox.exe" tiempo de espera /t 05 inicio "" "C :/Archivos de programa/VideoLAN/VLC/vlc.exe"

Equipo comenzar lanza el archivo ejecutable del programa deseado y el comando tiempo de espera/t establece el intervalo entre inicios. Preste atención a la ubicación de las comillas: contienen caminos que contienen espacios. Además, si hay caracteres cirílicos en la ruta, debe insertar un comando que cambie la codificación al comienzo del script. CHCP 1251 De lo contrario, el intérprete no podrá leer la ruta correctamente.

Cuando ejecutas el script, se abrirán cuatro ventanas de consola de forma secuencial; esto es normal después de ejecutar los comandos, todas se cerrarán automáticamente, sin embargo, puedes asegurarte de que solo se abra la primera ventana. Para hacer esto, el código de inicio de la aplicación debe cambiarse de la siguiente manera:

Inicio /b "" "ruta"

También puede suceder que en algún momento sea necesario pausar la ejecución del script para que el usuario pueda decidir si ejecuta todos los demás comandos o no. Hay un comando para esto pausa. Intente reemplazar el tiempo de espera con él y vea qué sucede.

Inicio /b "" "ruta" pausa

Veamos otro ejemplo de comandos para un archivo bat. Escribamos un script que apague la computadora en un caso y la reinicie en otro. Para estos fines usaremos el comando cerrar con parametros /s, /r Y /t. Si lo desea, puede agregar una solicitud para realizar una acción a su archivo corporal, como este:

@echo off chcp 1251 echo "¿Está seguro de que desea apagar su computadora?" pausar apagado /s /t 0

Expliquemos. El primer comando oculta el texto de los comandos, el segundo establece la codificación cirílica, el tercero muestra un mensaje para el usuario, el cuarto establece una pausa, el quinto se apaga y con la tecla /r en lugar de /s reinicia la computadora sin el tradicional retraso de un minuto. Si no quiere hacer ceremonias con solicitudes y pausas, puede dejar solo el quinto comando.

Si en lugar de texto en ruso al ejecutar el comando ve kryakozyabra, intente convertir el archivo de script a ANSI.

¿Qué más puedes hacer con los guiones? Muchas cosas, por ejemplo, borrar, copiar o mover archivos. Digamos que tiene una determinada carpeta de datos en la raíz de la unidad D, cuyo contenido debe borrarse de una sola vez. Abra el archivo por lotes y pegue el siguiente comando en él:

Del /A /F /Q "D:/datos"

O puedes hacer esto:

Forfiles /p "D:/data" /s /m *.* /c "cmd /c Del @path"

A diferencia del primero, el segundo comando elimina archivos de forma recursiva, es decir, se eliminarán todos los archivos de la carpeta de datos más los ubicados en subdirectorios.

Aquí hay otro ejemplo útil. Escribamos un script que creará una copia de seguridad del contenido de una carpeta y guardará los datos en otra. El comando es responsable de copiar. robocopia:

Robocopy C:/datos D:/copia de seguridad /e pausa

Al ejecutar dicho archivo por lotes para su ejecución, copiará todo el contenido de la carpeta de datos a la carpeta de respaldo, incluidos los subdirectorios, los vacíos y los archivos. Por cierto, el comando robocopy tiene muchos parámetros que le permiten configurar los parámetros de copia de manera muy flexible.

Ejecute archivos bat como administrador y según una programación, inicio oculto de bat

Ahora ya sabe cómo crear archivos por lotes y tiene algunos conocimientos generales del lenguaje del intérprete CMD. Estos fueron los conceptos básicos, ahora es el momento de familiarizarse con algunas funciones útiles para trabajar con archivos bat. Se sabe que los programas requieren derechos de administrador para realizar algunas acciones. Los batniks también pueden necesitarlos. La forma más obvia de ejecutar un script como administrador es hacer clic derecho sobre él y seleccionar la opción apropiada en el menú contextual.

Además, puede asegurarse de que siempre se inicie un archivo por lotes específico con privilegios elevados. Para hacer esto, debe crear un acceso directo normal a dicho script, abrir sus propiedades, hacer clic en el botón "Avanzado" y marcar la casilla de verificación "Ejecutar como administrador" en la ventana que se abre. Este método también es bueno porque le permite seleccionar cualquier ícono para el acceso directo, mientras que un archivo con extensión BAT o CMD siempre tendrá una apariencia anodina.

Los scripts, como todas las aplicaciones, se pueden iniciar según un cronograma. Equipo tiempo de espera/t no es del todo apropiado aquí; para un inicio retrasado, es mejor utilizar el Programador de tareas integrado de Windows. Aquí todo es sencillo. Abrir con el comando tareaschd.msc Programador, decida el desencadenante, seleccione la acción "Ejecutar programa" y especifique la ruta al archivo bat. Eso es todo, el script se ejecutará a la hora prevista.

Y finalmente, un punto más interesante. Cuando ejecuta un archivo bat, aparece una ventana de línea de comando en la pantalla, aunque solo sea por una fracción de segundo. ¿Es posible hacer que el script se ejecute en modo oculto? Es posible y de varias maneras. El más simple es el siguiente. Cree un acceso directo para el archivo bat, abra sus propiedades y seleccione "Contraído en icono" en el menú "Ventana". Después de esto, el único signo visible del script en ejecución será la aparición del ícono CMD en la barra de tareas, pero no se abrirá ninguna ventana.

Si desea ocultar completamente la ejecución del script, puede utilizar una "muleta": el script VBS, que iniciará su archivo por lotes en modo oculto. El texto del script se encuentra a continuación, guárdelo en un archivo. oculto.vbs, habiendo reemplazado previamente la ruta en la segunda línea de código D:/script.bat ruta a su archivo corporal.

Establecer WshShell = CreateObject("WScript.Shell") WshShell.Run chr(34) & "D:\script.bat" & Chr(34), 0 Establecer WshShell = Nada

También hay otras opciones, por ejemplo, usar la utilidad Inicio oculto, que le permite ejecutar archivos ejecutables y por lotes en modo oculto, incluso sin invitación.

Y eso es todo por ahora. Puede encontrar fácilmente información sobre la creación de scripts BAT en Internet. También es una buena idea consultar el tutorial de la línea de comandos de Microsoft Windows de William Stanek. A pesar de que han pasado más de diez años desde la publicación del libro, la información contenida en él sigue siendo relevante.




Arriba