Cómo crear un archivo por lotes BAT de este tipo.
¿Qué tal hacerlo bajo DOS? ¿Cómo es esto? Como referencia:
Sintaxis del archivo por lotes BAT
==== Nota ======================== = ===============
.bat es un archivo por lotes en dos
.cmd es otra parte del entorno de línea de comandos del kernel nt. Tipos de archivos por lotes
Desde una perspectiva más amplia, los scripts de shell de Unix, así como el texto interpretado y ejecutado por el shell en otros sistemas operativos e incluso aplicaciones, tienen funciones muy similares a los archivos por lotes. interpretado y ejecutado en unidades de comportamiento por un intérprete dedicado. Esta forma de texto se conoce más comúnmente como lenguaje de escritura. Por lo tanto, hasta cierto punto, los lenguajes de secuencias de comandos como Batch, Unix Shell, Awk, Basic y Perl son todos iguales, pero el alcance de la aplicación y la plataforma de interpretación son diferentes. Incluso algunas aplicaciones todavía usan el nombre de procesamiento por lotes, pero su contenido y extensiones son completamente diferentes del procesamiento por lotes de DOS.
====================================
En primer lugar, el archivo por lotes es un archivo de texto. Cada línea de este archivo es un comando de DOS (la mayoría de las veces es como la línea de comando que ejecutamos en el indicador de DOS. Puede usar Editar en DOS o el Bloc de notas en Windows). (bloc de notas) y otras herramientas de edición de archivos de texto para crear y modificar archivos por lotes.
==== Nota===================
Puedes usar comandos que no sean de DOS en archivos por lotes, incluso Se pueden utilizar archivos de datos ordinarios sin características ejecutables. Esto se debe a la participación de la nueva plataforma de interpretación del sistema Windows, lo que hace que la aplicación del procesamiento por lotes sea cada vez más "marginal". Por lo tanto, el procesamiento por lotes que analizamos debe limitarse al entorno DOS o al entorno de línea de comandos; de lo contrario, será necesario cambiar significativamente muchos conceptos y configuraciones.
========================
En segundo lugar, un archivo por lotes es un programa sencillo. controle el flujo de ejecución del comando a través de declaraciones condicionales (if) y declaraciones de control de proceso (goto). En el procesamiento por lotes, también puede usar declaraciones de bucle (for) para recorrer un comando. Por supuesto, las capacidades de programación de los archivos por lotes son muy limitadas y no estándar en comparación con declaraciones de programación como el lenguaje C. Las declaraciones del programa de procesamiento por lotes son comandos de DOS uno por uno (incluidos los comandos internos y externos), y la capacidad del procesamiento por lotes depende principalmente de los comandos que utilice.
==== Nota ==================
El archivo por lotes también se puede llamar programa de procesamiento por lotes (programa por lotes) , esto es diferente de los lenguajes compilados. En lo que respecta al lenguaje C, un archivo con la extensión c o cpp puede denominarse archivo de lenguaje C o código fuente de lenguaje C, pero solo después de la compilación y la conexión. Solo los archivos exe pueden llamarse C. programas de idiomas. Debido a que el archivo por lotes en sí tiene tanto la legibilidad del texto como la ejecutabilidad de un programa, los límites entre estos términos son relativamente borrosos.
============================
En tercer lugar, cada lote escrito de archivos de procesamiento es equivalente a un comando externo de DOS. Puede colocar el directorio donde se encuentra en su ruta de búsqueda de DOS (ruta) para que pueda ejecutarse en cualquier lugar. Un buen hábito es crear un directorio bat o por lotes en el disco duro (por ejemplo, C:\BATCH) y luego colocar todos los archivos por lotes que escriba en este directorio, siempre que c:\batch sea. establecido en la ruta, puede ejecutar cualquier programa por lotes que escriba en cualquier lugar.
==== Nota =====
Hablando puramente en términos del sistema DOS, los programas ejecutables se pueden subdividir aproximadamente en cinco categorías, según la prioridad de ejecución de alta a low Los arreglos son: comandos macro DOSKEY (pre-residentes en la memoria), comandos internos en COMMAND.COM (residentes en la memoria en cualquier momento según el entorno de la memoria), programas ejecutables con extensión com (cargados directamente en la memoria mediante command.com ), un programa ejecutable con una extensión de bits exe (cargado en la memoria después de ser reubicado por command.com), un programa por lotes con una extensión de bits bat (interpretado y analizado por command.com, y llamado en orden de prioridad según su contenido ), 3, 4, 5 programas ejecutables, analiza una línea, ejecuta una línea, el archivo en sí no se carga en la memoria)
============
Cuarto, en los sistemas DOS y Win9x/Me, el archivo por lotes AUTOEXEC.BAT en el directorio raíz de la unidad C: es un archivo por lotes que se ejecuta automáticamente. Este archivo se ejecutará automáticamente cada vez que se inicie el sistema. inicie el sistema cada vez Coloque los comandos que deben ejecutarse cada vez en este archivo, como configurar la ruta de búsqueda, cargar el controlador del mouse y el caché del disco, configurar las variables de entorno del sistema, etc. El siguiente es un ejemplo de autoexec.bat ejecutándose en Windows 98:
@ECHO OFF
RUTA C:\WINDOWS;C:\WINDOWS\COMMAND;C:\UCDOS; :\DOSTools
C:\SYSTOOLS;C:\WINTOOLS;C:\BATCH
LH SMARTDRV.EXE /X
LH DOSKEY.COM / insertar
LH CTMOUSE.EXE
SET TEMP=D:\TEMP
SET TMP=D:\TEMP
== = = Nota =====
AUTOEXEC.BAT es un archivo por lotes que se ejecuta automáticamente para sistemas DOS, que es interpretado y ejecutado por COMMAND.COM cuando se inicia
En el; Entorno Win9x. No solo agrega soporte para DOSSTART.BAT, WINSTART.BAT y muchos otros archivos por lotes que se ejecutan automáticamente, sino que también agrega muchas variantes como .DOS .W40 .BAK .OLD .PWS a AUTOEXEC.BAT para adaptarse a entornos complejos. entornos y necesidades cambiantes.
==== willsort Nota del editor =============
Hay muchas cosas que vale la pena considerar con respecto a la siguiente clasificación de comandos. El @ en los comandos comunes no es un comando, pero dir, copiar y otros comandos de uso común no están incluidos, y todos los comandos en los comandos especiales son comandos comunes para mí. Se recomienda dividir los comandos a los que hace referencia el procesamiento por lotes en tres categorías: comandos internos, comandos externos y programas de terceros. Entre los comandos internos y los comandos externos, existe otro tipo de comando dedicado o de uso común en el procesamiento por lotes, que se puede denominar "comando de procesamiento por lotes".
El siguiente es un extracto del documento de ayuda de MS-DOS 6.22 sobre "comandos de procesamiento por lotes". Por supuesto, algunos de los conceptos y definiciones están algo desactualizados.
Comando por lotes
Un archivo por lotes o programa por lotes es un archivo de texto que contiene varios comandos de MS-DOS, con la extensión .BAT. Cuando escribe el nombre de un programa por lotes en el símbolo del sistema, MS-DOS ejecuta los comandos de este programa por lotes en grupos.
Cualquier comando disponible en el símbolo del sistema se puede utilizar en un programa por lotes. Además, los siguientes comandos de MS-DOS se utilizan específicamente en programas por lotes.
==========
Comandos de uso común
echo, @, call, pausa, rem (consejo: use :: en su lugar rem) son los comandos más utilizados para archivos por lotes y comenzaremos a aprender de ellos.
==== Nota ==========
En primer lugar, @ no es un comando, sino un marcador especial para el procesamiento por lotes de DOS. Para bloquear el eco de la línea de comando Los siguientes son algunos marcadores especiales que pueden verse en la línea de comando de DOS o en el procesamiento por lotes:
Terminador de línea de comando CR(0D)
Escape(1B ) ANSI. guía de caracteres de escape
Espacio(20) Delimitadores de parámetros de uso común
Tab(09) ; = Delimitadores de parámetros de uso poco común
+ conector de archivo de comando COPY
* ? Comodín de archivo
"" Delimitador de cadena
| Carácter de canalización de comando
< > > > Carácter de redirección de archivo
@ Carácter de máscara de eco de línea de comando
/ Carácter de guía de cambio de parámetro
: Carácter de guía de etiqueta de lote
% Guía de variable de lote
En segundo lugar , :: de hecho puede desempeñar el papel de comentario rem, y es más conciso y efectivo, pero hay dos puntos a tener en cuenta:
Primero, excepto ::, cualquier línea de carácter que comience con: Se considerará como una etiqueta en el procesamiento por lotes y todo el contenido posterior se ignorará directamente. Solo para distinguirlo de las etiquetas normales, se recomienda utilizar etiquetas que no puedan ser reconocidas por goto. alfanumérico va seguido inmediatamente de :.
En segundo lugar, a diferencia de rem, la línea de caracteres después de :: no se repetirá durante la ejecución, independientemente de si se utiliza echo on o no en la línea de comando. el intérprete de comandos no cree que sea una línea de comando válida. Desde este punto de vista, rem será más adecuado que :: en algunas situaciones, además, rem se puede utilizar en el archivo config.sys
======================
echo significa mostrar los caracteres después de este comando
echo off significa que todos los comandos ejecutar después de esta declaración no mostrará la línea de comando en sí
@ es similar a echo off, pero se agrega al principio de cada línea de comando, lo que indica que la línea de comando no se mostrará cuando se ejecute Display. la línea de comando para esta línea (solo puede afectar la línea actual).
call llama a otro archivo por lotes (si llama a otro archivo por lotes directamente sin llamar, no podrá volver al archivo actual y ejecutar comandos posteriores del archivo actual después de ejecutar ese archivo por lotes).
pausa Al ejecutar esta oración se pausará la ejecución del lote y se mostrará el mensaje Presione cualquier tecla para continuar... en la pantalla, esperando que el usuario presione cualquier tecla para continuar.
rem significa este comando. Los caracteres siguientes son líneas de explicación (comentarios), que no se ejecutan y son solo para referencia futura (equivalente a comentarios en el programa).
==== Nota======
La descripción aquí es confusa, es mejor citar directamente la ayuda de la línea de comando de cada comando para estar más organizado p>
--------------------------
ECHO
Mostrar u ocultar lote procesando cuando el programa se está ejecutando El texto en el programa. También se puede utilizar para habilitar o deshabilitar la repetición de comandos.
Cuando se ejecuta un programa por lotes, MS-DOS normalmente muestra (repite) los comandos del programa por lotes en la pantalla.
Utilice el comando ECHO para desactivar esta función.
Sintaxis
ECHO [ON|OFF]
Para utilizar el comando echo para mostrar un comando, se puede utilizar la siguiente sintaxis:
echo [mensaje]
Parámetros
ON|OFF
Especifique si se permite el eco del comando. Para mostrar la configuración actual de ECHO, utilice el comando ECHO sin parámetros.
mensaje
Especifique el texto que MS-DOS muestra en la pantalla.
------------------
LLAMADA
Llame a un programa por lotes desde otro programa por lotes sin causar el primer lote en abortar.
Sintaxis
CALL [unidad:][ruta]nombre de archivo [parámetros-batch]
Parámetros
[unidad:][ruta ]nombre de archivo
Especifique el nombre del programa por lotes que se llamará y su ubicación de almacenamiento. El nombre del archivo debe usar .BAT como extensión.
batch-parameters
Especifique la información de la línea de comando requerida por el programa por lotes.
-------------------------------
PAUSA
Pausa la ejecución de un programa por lotes y muestra un mensaje que solicita al usuario que presione cualquier tecla para continuar la ejecución. Este comando sólo se puede utilizar dentro de un
procesador por lotes.
Sintaxis
PAUSE
REM
Añadir comentarios al archivo por lotes o CONFIG.SYS. También puede usar el comando REM para bloquear comandos (en CONFIG.SYS
también puede usar punto y coma; en lugar del comando REM, pero no se puede reemplazar en archivos por lotes).
Sintaxis
REM [cadena]
Parámetros
cadena
Especifique el comando que se bloqueará o incluir anotaciones.
========================
Ejemplo 1: use editar para editar el archivo a.bat e ingrese lo siguiente El contenido se guarda como c:\a.bat. Después de ejecutar este archivo por lotes, puede escribir todos los archivos en el directorio raíz en a.txt, iniciar UCDOS e ingresar a WPS y otras funciones.
El contenido del archivo por lotes es: Comentarios del comando:
@echo off no muestra las líneas de comando posteriores ni la línea de comando actual
dir c:\ *.* >a.txt Escriba la lista de archivos de la unidad c en un.txt
llame a c:\ucdos\ucdos.bat llame a ucdos
echo Hola muestra "Hola" p >
pausa pausa, espere a que el botón continúe
rem prepárese para ejecutar wps Nota: prepárese para ejecutar wps
cd ucdos ingrese al directorio ucdos
wps run wps
p>Parámetros de archivos por lotes
Los archivos por lotes también pueden usar parámetros como funciones del lenguaje C (equivalentes a los parámetros de línea de comandos de los comandos de DOS), lo que requiere el uso de un indicador de parámetro" %".
%[1-9] representa parámetros. Los parámetros se refieren a cadenas separadas por espacios (o tabulaciones) agregadas después del nombre del archivo al ejecutar el archivo por lotes. Las variables pueden variar de %0 a %9, %0 representa el comando por lotes en sí y otras cadenas de parámetros se representan en orden de %1 a %9.
Ejemplo 2: hay un archivo de procesamiento por lotes llamado f.bat en el directorio raíz C:, con el contenido:
@echo off
formato % 1
formato %1
p>
Si ejecuta C:\>f a:
Al ejecutar f.bat, %1 representa a: , por lo que el formato %1 es equivalente al formato a:, por lo que el comando anterior Lo que realmente se ejecuta durante el tiempo de ejecución es el formato a:
Ejemplo 3: el archivo de procesamiento por lotes en el directorio raíz C: se llama t. bat, y el contenido es:
@echo off
escribe %1
escribe %2
Luego ejecuta C:\> t a.txt b.txt
%1: significa a. txt
%2: representa b.txt
Entonces el comando anterior mostrará el contenido. de los archivos a.txt y b.txt secuencialmente.
==== Nota================
Los parámetros también se tratan como variables en el procesamiento por lotes, por lo que el signo de porcentaje es también se utiliza Como carácter guía, va seguido de un número del 0 al 9 para formar un carácter de referencia de parámetro. La relación entre el carácter de referencia y el parámetro (como% 1 y a: arriba) es similar a la relación entre. puntero de variable y el valor de la variable Cuando queremos Cuando se hace referencia al undécimo o más parámetros, se debe mover el puntero de inicio del parámetro de DOS. El comando shift desempeña el papel de este puntero en movimiento, que mueve el puntero de inicio del parámetro a. el siguiente parámetro, similar al funcionamiento del puntero en lenguaje C. El diagrama es el siguiente:
Estado inicial, cmd es el nombre del comando, al que se puede hacer referencia con %0
cmd. arg1 arg2 arg4 arg6 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^
| >%0 %1 %2 %3 %4 %5 % 6 %7 %8 %9
Después de 1 turno, no se hará referencia a cmd
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^
| | %2 %3 %4 %5 %6 %7 %8 %9
Después de 2 turnos, arg1 también se descarta y el puntero %9 está vacío y no tiene significado de referencia
cmd arg2 arg4 arg6 arg8 arg9 arg10
^ ^ ^ ^ ^ ^
| >%0 %1 %2 %3 %4 %5 %6 %7 %8
Desafortunadamente, la operación inversa de shift no es compatible con win9x y DOS solo en el entorno de línea de comando del kernel nt. shift admite el parámetro /n, que se puede utilizar como primer parámetro. Devuelve el puntero inicial móvil para la base
=================
Comando especial
si la opción ir a es un comando relativamente avanzado en archivos por lotes. Si domina su uso, es un experto en archivos por lotes.
1. If es una declaración condicional, que se utiliza para determinar si se cumplen las condiciones especificadas, decidiendo así ejecutar diferentes comandos. Hay tres formatos:
1. if [not] "parámetro" == "cadena" comando a ejecutar
Si el parámetro es igual (no significa desigual, lo mismo a continuación). ) especifique la cadena; si la condición es verdadera, ejecute el comando; de lo contrario, ejecute la siguiente oración.
Ejemplo: si "%1"=="a" formatea a:
====
La línea de comando de If ayuda en este punto La descripción es :
IF [NOT] string1==string2 comando
Aquí hay que tener en cuenta los siguientes puntos:
1. Comillas dobles que contienen cadenas No es necesario. según la gramática, pero es solo un carácter "antiaéreo" habitual
2 string1 no es necesariamente un parámetro, también puede ser una variable de entorno, una variable de bucle y otras constantes o variables de cadena p>
2. p>
3. el comando no es necesario para la sintaxis, la cadena2 seguida de un espacio puede formar una línea de comando válida
=========== ======= ============
2. si [no] existe [ruta\] nombre del archivo comando a ejecutar
Si hay un archivo específico, entonces, si la condición es verdadera, ejecute el comando; de lo contrario, ejecute la siguiente oración.
Por ejemplo: si existe c:\config.sys escriba c:\config.sys
Indica que si el archivo c:\config.sys existe, se mostrará su contenido .
****** Nota**********
También puedes usar el siguiente uso:
si existe comando
dispositivo se refiere al dispositivo cargado en el sistema DOS, generalmente bajo win98:
AUX, PRN, CON, NUL
COM1, COM2, COM3, COM4
p>
LPT1, LPT2, LPT3, LPT4
XMSXXXX0, EMMXXXX0
A: B: C: ...,
CLOCK$, CONFIG $, DblBuff$, IFS$HLP$
El contenido específico variará ligeramente debido a los diferentes entornos de hardware y software. Al utilizar estos nombres de dispositivos, debe garantizar los tres puntos siguientes. :
1. El dispositivo existe (excepto los dispositivos virtualizados por software)
2. El controlador del dispositivo se ha cargado (los dispositivos estándar como aux y prn los define el sistema. por defecto)
3 . El dispositivo está listo (principalmente se refiere a a: b: ..., com1..., lpt1..., etc.)
Puede. se puede obtener mediante el comando mem/d | find "device" /i Revise los dispositivos cargados en su sistema
Además, en el sistema DOS, el dispositivo también se considera un archivo especial y el archivo también puede llamarse dispositivo de caracteres; porque dispositivo (dispositivo) y archivo Todos se administran mediante identificadores. El identificador es el nombre, similar al nombre del archivo, excepto que el identificador no se usa para la administración del disco, sino para la administración de la memoria. -La carga del dispositivo llamado se refiere a asignarle la memoria disponible en la memoria
=======================. =============
3. if errorlevel
Muchos programas de DOS devolverán un valor numérico después de ejecutarse para indicar el resultado (o estado) del programa, que se puede juzgar a través del comando if errorlevel. El valor de retorno del programa determina ejecutar diferentes comandos en función de diferentes valores de retorno (los valores de retorno deben organizarse en orden desde el mayor a menor). Si el valor de retorno es igual al número especificado, la condición es verdadera y se ejecuta el comando; de lo contrario, se ejecuta la siguiente oración.
Por ejemplo, si el nivel de error 2 va a x2
==== Nota ===========
El valor de retorno es grande a pequeño El orden no es necesario, pero es solo un uso común cuando el comando de ejecución es goto. Cuando se usa set como comando de ejecución, generalmente se ordena de pequeño a grande. Por ejemplo, si necesita devolver. código en una variable de entorno, debe utilizar el siguiente formulario de pedido:
si el nivel de error 1 establece el=1
si el nivel de error 2 establece el=2
si el nivel de error 3 establece el=3
si el nivel de error 4 establece el=4
si el nivel de error 5 establece el=5
...
Por supuesto, también puedes usar el siguiente bucle. El principio es consistente:
for %%e in (1 2 3 4 5 6 7 8...) do if errorlevel %%e. set el=%%e
Más eficiente y conciso Para su uso, puede consultar otro artículo que escribí sobre cómo obtener el nivel de error
La razón de este fenómeno es que la condición de juicio de if El código de retorno de comparación de nivel de error no es igual a, sino mayor o igual a. Debido a la función de salto de goto, la clasificación de pequeño a grande hará que salte el código de retorno más pequeño y debido a la función de asignación "repetida" de; el comando set, ordenar de grande a pequeño hará que el código de retorno más pequeño "cubra" el código de retorno más grande.
Además, aunque el comando if errorlevel=
p>
================== =========
2. Cuando el archivo por lotes goto se ejecuta aquí, saltará a la etiqueta especificada por goto (la etiqueta es etiqueta, la etiqueta se define con: seguida de una cadena estándar), la instrucción goto generalmente se usa junto con if para ejecutar diferentes grupos de comandos según diferentes condiciones.
Por ejemplo:
ir al final
:end
echo este es el final
La etiqueta es ":String" para definir, la línea que contiene la etiqueta no se ejecutará.
==== Nota del editor
la etiqueta a menudo se traduce como "etiqueta", pero no existe un consenso general sobre esto.
goto está asociado con: Usar can. realiza saltos en medio de la ejecución y, combinado con if, puede realizar ramas condicionales en el proceso de ejecución. Múltiples ifs pueden realizar la agrupación de comandos, similar a la estructura de caso de cambio en C o la estructura de caso de selección en Básico, a gran escala y. Las funciones de función estructuradas en lenguajes de alto nivel se pueden realizar agrupando comandos. La siguiente es una comparación de la estructura de sintaxis del procesamiento por lotes y C/Basic:
Batch C/Basic
<. p>goto&: ir a&:ir a&:&if if{}&else{} / if&elseif&endif
ir a&:&if... cambiar&case / seleccionar caso
ir a&: &if&set&envar... función() / función(),sub()
============================= ========
3. elección Utilice este comando para permitir al usuario ingresar un carácter (para selección), devolviendo así diferentes niveles de error según la elección del usuario, y luego cooperar con el nivel de error. para ejecutar diferentes comandos según la elección del usuario.
Nota: El comando de elección es un comando externo proporcionado por los sistemas DOS o Windows. La sintaxis del comando de elección en diferentes versiones será ligeramente diferente. Utilice la opción /?.
La sintaxis del comando de elección (esta sintaxis es la sintaxis del comando de elección en Windows 2003, y la sintaxis del comando de otras versiones de elección es similar a esta):
ELECCIÓN [ /C opciones] [/ N] [/CS] [/T tiempo de espera /D elección] [/M texto]
Descripción:
Esta herramienta permite al usuario seleccionar un elemento de una lista de selección y devuelve el índice del elemento seleccionado.
Lista de parámetros:
/C elecciones Especifica la lista de opciones que se creará. La lista predeterminada es "YN".
/N Oculta la lista de opciones en el mensaje. Se muestra el mensaje anterior y la opción
permanece habilitada.
/CS Permite la selección de opciones que distinguen entre mayúsculas y minúsculas. De forma predeterminada, esta herramienta
no distingue entre mayúsculas y minúsculas.
/T timeout Número de segundos de pausa antes de realizar una selección predeterminada. Los valores aceptables son de 0
a 9999. Si se especifica 0, no habrá pausa y se seleccionará la opción predeterminada
.
/D opción especifica la opción predeterminada después de nnnn segundos. El carácter debe estar en un conjunto de opciones especificadas con la opción /C
; al mismo tiempo, nnnn debe especificarse con /T.
/M texto Especifica el mensaje que se mostrará antes del mensaje. Si no se especifica, la herramienta simplemente
muestra el mensaje.
/? Mostrar mensaje de ayuda.
Nota:
La variable de entorno ERRORLEVEL se establece en el índice clave seleccionado del conjunto de selección. La primera opción de la lista
devuelve 1, la segunda opción devuelve 2, y así sucesivamente. Si la tecla presionada por el usuario no es una selección válida,
la herramienta emitirá un sonido de advertencia. Si la herramienta detecta una condición de error, devuelve un valor
ERRORLEVEL de 255.
Si el usuario presiona Ctrl+Interrupción o Ctrl+C, la herramienta devuelve un valor ERRORLEVEL de 0
. Cuando utilice el parámetro ERRORLEVEL en un programa por lotes, ordene los parámetros en orden
descendente.
Ejemplo:
ELECCIÓN /?
ELECCIÓN /C YNC /M "Presione Y para confirmar, N para confirmar o C para cancelar". p>
CHOICE /T 10 /C ync /CS /D y
CHOICE /C ab /M "Elija a para la opción 1 y elija b para la opción 2".
CHOICE /C ab /N /M "Elija a para la opción 1 y elija b para la opción 2
==== Nota del editor==========". == ===================
Enumero la ayuda de uso preferida en win98, que se ha distinguido
Espera para que el usuario elija una de un conjunto de opciones
Espera a que el usuario seleccione una de un conjunto de opciones
ELECCIÓN [/C[:]opciones] [/N. ] [/S ] [/T[:]c,nn] [texto]
/C[:]choices Especifica las claves permitidas. El valor predeterminado es YN
Especifica las claves permitidas (caracteres). para ser seleccionado), el valor predeterminado es YN
/N No mostrar opciones y ? al final de la cadena de solicitud
No mostrar signos de interrogación ni caracteres candidatos en la cadena de solicitud<. /p>
/S Trata las claves de elección entre mayúsculas y minúsculas
El manejo de caracteres candidatos distingue entre mayúsculas y minúsculas
/T[:]c,nn Elección predeterminada de c después de nn. segundos
C se selecciona de forma predeterminada después de nn segundos
texto Cadena de mensaje a mostrar
La cadena de mensaje a mostrar
ERRORLEVEL es establecido en el desplazamiento de las pulsaciones clave del usuario en las opciones.
ERRORLEVEL se establece en el valor de desplazamiento del carácter escrito por el usuario en los caracteres candidatos
Si ejecuto el comando: CHOICE / C YNC /M "Confirme, presione Y, presione N para confirmar o presione C para cancelar".
La pantalla mostrará:
Presione Y para confirmar, presione N para confirmar o presione C para cancelar.
[Y,N,C]?
Ejemplo: el contenido de test.bat es el siguiente (tenga en cuenta que cuando se utiliza if errorlevel para determinar el valor de retorno, el valor de retorno debe ordenarse de mayor a menor) :
@echo off
elección /C dme /M "defrag,mem,end"
si el nivel de error 3 va al final
si nivel de error 2 ir a mem
si nivel de error 1 ir a desfragmentar
:defrag
c:\dos\defrag
ir a fin p>
: mem
mem
ir al final
:end
hacer eco adiós
Después de ejecutar este lote, se mostrará "defrag,mem,end[D,M,E]?". El usuario puede seleccionar d m e, y luego la declaración if juzgará según la elección del usuario. segmento de programa etiquetado como defrag, y m significa ejecutar el segmento de programa etiquetado como mem. segmento de programa, e significa ejecutar el segmento de programa etiquetado como final. Al final de cada segmento de programa, se usa ir al final para saltar el programa a la etiqueta final y luego. el programa mostrará adiós y finalizará el procesamiento por lotes.
4. Para el comando de bucle, siempre que se cumplan las condiciones, ejecutará el mismo comando varias veces.
Sintaxis:
Ejecutar un comando específico en cada archivo de un conjunto de archivos.
FOR %%variable IN (establecer) comando DO [command-parameters]
%%variable especifica un parámetro reemplazable de una sola letra.
(set) Especifica un archivo o un grupo de archivos. Se pueden utilizar caracteres comodín.
comando especifica el comando que se ejecutará para cada archivo.
command-parameters
Especifique parámetros o modificadores de línea de comando para un comando específico.
Por ejemplo, hay una línea en un archivo por lotes:
para %%c en (*.bat *.txt) escriba %%c
Entonces esto La línea de comando mostrará el contenido de todos los archivos con extensiones bat y txt en el directorio actual.
==== Nota del editor====================================== === ======
Cabe señalar que cuando la cadena en () no es un nombre de archivo único o múltiple, simplemente se reemplazará como una cadena. ), es obvio que for puede considerarse como un bucle transversal.
Por supuesto, en la serie nt/2000/xp/2003 de entornos de línea de comandos, a for se le han dado más funciones para analizar. salida de comando o cadenas en archivos, y se han utilizado muchos modificadores para expandir la función de reemplazo de archivos
============ ===========. =================================
Ejemplo de procesamiento por lotes
1. IF-EXIST
1) Primero use el Bloc de notas para crear un archivo por lotes test1.bat en C:\. El contenido del archivo es el siguiente:
@echo off
SI EXISTE \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT
SI NO EXISTE \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT no existe
Luego ejecútelo: p>
C:\>TEST1.BAT
Si el archivo AUTOEXEC.BAT existe en C:\, se mostrará su contenido; si no existe, el proceso por lotes le indicará que el el archivo no existe.
2) Luego cree un archivo test2.bat con el siguiente contenido:
@ECHO OFF
IF EXIST \%1 TYPE \%1
SI NO EXISTE \%1 ECHO \%1 no existe
Ejecución:
C:\>TEST2 AUTOEXEC.BAT
Este comando Los resultados de ejecución son los mismos que los anteriores.
Instrucciones:
(1) IF EXIST se utiliza para probar si el archivo existe. El formato es
IF EXIST [ruta + nombre de archivo] comando<. /p> p>
(2) %1 en el archivo test2.bat es un parámetro. DOS permite pasar 9 información de parámetros por lotes al archivo por lotes, que son %1~%9 (%0 representa test2. comando en sí). Esto es un poco como la relación entre los parámetros reales y los parámetros formales en la programación, %1 es un parámetro formal y AUTOEXEC.BAT es un parámetro real.
==== willsort Nota del editor===================================== =======
DOS no tiene un límite de "permitir la transmisión de 9 información de parámetros por lotes". El número de parámetros solo estará limitado por la longitud de la línea de comando y el procesamiento. capacidad del comando llamado Sin embargo, en un programa por lotes, solo se pueden hacer referencia a 10 parámetros al mismo tiempo, porque DOS solo proporciona diez caracteres de referencia de parámetros %0~%9
====. ==== =============================================== =
3) Además, cree un archivo llamado TEST3.BAT con el siguiente contenido:
@echo off
IF "%1" == "A " ECHO XIAO
IF "%2" == "B" ECHO TIAN
IF "%3" == "C" ECHO XIN
Si ejecute:
C:\>TEST3 A B C
La pantalla mostrará:
XIAO
TIAN
XIN
Si ejecutas:
C:\>TEST3 A B
La pantalla mostrará
XIAO
TIAN
Durante la ejecución de este comando, DOS asignará una cadena vacía al parámetro %3.
2. IF-ERRORLEVEL
Crea TEST4.BAT con el siguiente contenido:
@ECHO OFF
XCOPY C:\AUTOEXEC BAT D:\
IF ERRORLEVEL 1 ECHO Error al copiar el archivo
IF ERRORLEVEL 0 ECHO El archivo se copió correctamente
Luego ejecute el archivo:
C:\>TEST4
Si la copia del archivo se realiza correctamente, la pantalla mostrará "Archivo copiado correctamente", de lo contrario mostrará "Error en la copia del archivo".
IF ERRORLEVEL se utiliza para probar el valor de retorno de su comando DOS anterior. Tenga en cuenta que es solo el valor de retorno del comando anterior y el valor de retorno debe juzgarse en orden de mayor a menor.
Entonces el siguiente archivo por lotes es incorrecto:
@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:\
IF ERRORLEVEL 0 ECHO El archivo se copió correctamente
IF ERRORLEVEL 1 ECHO No se encontró el archivo copiado
IF ERRORLEVEL 2 ECHO El usuario canceló la operación de copia mediante Ctrl-c
IF ERRORLEVEL 3 ECHO Error preestablecido impide la operación de copia de archivos
IF ERRORLEVEL 4 ECHO Error de escritura en disco durante el proceso de copia
No importa si la copia se realizó correctamente o no, lo siguiente:
No se encontró el archivo copiado
El usuario canceló la operación de copia mediante Ctrl-c
El error preestablecido impide la operación de copia del archivo
Se mostrará un error de escritura en el disco durante el proceso de copia
.
Los siguientes son los valores de retorno de varios comandos de uso común y sus significados:
copia de seguridad
0 Copia de seguridad exitosa
1 No encontrado Copia de seguridad de archivos
2 El conflicto al compartir archivos impide que se complete la copia de seguridad
3 El usuario cancela la copia de seguridad con Ctrl-c
4 La operación de copia de seguridad se canceló debido a un error fatal
diskcomp
0 Los discos se comparan iguales
1 Los discos son diferentes
2 El usuario cancela la operación de comparación mediante Ctrl -c
3 La operación de comparación fue abortada debido a un error fatal
4 Un error preestablecido abortó la comparación
copia de disco
0 La operación de copia del disco fue exitosa
1 Error de lectura/escritura del disco no fatal
2 El usuario finaliza la operación de copia mediante Ctrl-c
3 Copia del disco se cancela debido a un error fatal de procesamiento
4 bloque de error preestablecido