¿Qué es un archivo por lotes de MS-DOS?
.cmd es otro archivo por lotes en el entorno de línea de comandos del kernel nt
Desde una perspectiva más amplia, los scripts de shell de Unix, así como otros sistemas operativos e incluso aplicaciones que interpretan y ejecutan texto mediante el shell, son muy similares a los archivos por lotes. El texto también se interpreta y ejecuta en unidades de comportamiento mediante un intérprete especializado. Esta forma de texto a menudo se denomina lenguaje de secuencia de comandos. Entonces, desde cierta perspectiva, los lenguajes de secuencias de comandos como Batch, Unix Shell, Awk, Basic y Perl son todos iguales, pero su alcance de aplicación y plataforma de interpretación son diferentes. Incluso algunas aplicaciones todavía utilizan el término procesamiento por lotes, pero su connotación y denotación son completamente diferentes del procesamiento por lotes de DOS.
====================================
En primer lugar, un archivo por lotes es un archivo de texto en el que cada línea es un comando de DOS (en la mayoría de los casos, igual que la línea de comando que ejecutamos en el indicador de DOS), al que se puede acceder mediante DOS Edit o el Bloc de notas de Windows. Puede crear y modificar archivos por lotes utilizando cualquier herramienta de edición de archivos de texto, como el Bloc de notas de Windows.
==== NOTA ===================
Los archivos por lotes pueden usar comandos que no sean de DOS, incluso sin un Archivo de datos ordinario con características ejecutables. Esto se debe a la intervención de Windows como nueva plataforma de interpretación, haciendo cada vez más "marginal" el uso del procesamiento por lotes. 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 que puede controle el flujo de comandos a través de declaraciones condicionales (if) y declaraciones de control de flujo (goto), o puede usar bucles (for) para recorrer un comando en un lote. Por supuesto, en comparación con el lenguaje C y otras declaraciones de programación, las capacidades de programación de archivos por lotes son muy limitadas y no estandarizadas. La declaración del programa de procesamiento por lotes es un comando de DOS (incluidos los comandos internos y externos). La función del procesamiento por lotes depende principalmente del comando que utilice.
==== Nota==================
Los archivos por lotes también se pueden llamar programas por lotes, que son diferentes para lenguajes compilados. Para el lenguaje C, un archivo con una extensión c o cpp se denomina archivo c o código fuente c. 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 un archivo exe compilado y vinculado puede denominarse programa de lenguaje C. Dado que el archivo por lotes en sí es a la vez un archivo legible por texto y un archivo ejecutable de programa, la línea entre estos nombres es muy borrosa.
============================
En tercer lugar, cada lote escrito de archivos de procesamiento es equivalente a un comando externo de DOS Siempre que su directorio esté ubicado en la ruta de búsqueda de DOS, se puede ejecutar en cualquier lugar. Una buena práctica es crear un directorio bat o por lotes en su disco duro (por ejemplo, C:\BATCH) y colocar todos los archivos por lotes en ese directorio para que puedan ejecutarse en cualquier lugar siempre que c:\batch esté configurado en la ruta. lugar para ejecutar todos los programas por lotes.
==== Nota =====
Puramente en lo que respecta al sistema DOS, los programas ejecutables se pueden subdividir en cinco categorías, ordenadas de mayor a menor según prioridad de ejecución: macro DOSKEY (precompletada), comandos internos en COMMAND.COM (completados en cualquier momento según el entorno de memoria) y programas ejecutables con una extensión com (completada por command.com).
Programas ejecutables con una extensión com (cargados directamente en la memoria mediante comando.COM), Programas ejecutables con una extensión com (cargados directamente en la memoria mediante comando.COM), Programas ejecutables con programas de extensión com (cargados directamente en la memoria mediante comando.COM) ) y programas ejecutables con extensión com (cargados directamente en la memoria mediante comando.COM). com), programas ejecutables con extensión exe (reubicados y cargados en la memoria mediante command.com), programas por lotes con extensión bat (interpretados y analizados por command.com, command.com presiona Los programas ejecutables 2, 3, 4 y 5 se llaman en orden de prioridad, analizando una línea y ejecutando el archivo en sí. Analizando una línea, ejecutando una línea, el archivo en sí no se carga en la memoria)
======== =====.
Cuarto, en DOS y Win9x/Me, el archivo por lotes AUTOEXEC.BAT en el directorio raíz del disco C: es un archivo por lotes que se ejecuta automáticamente cada vez que se inicia el sistema. Puede colocar comandos para que se ejecuten cada vez que se inicie el sistema en este archivo, como configurar rutas de búsqueda, cargar controladores de mouse y caché de disco, configurar variables de entorno del sistema, etc. El siguiente es un ejemplo de ejecución de autoexec.bat en Windows 98:
@ECHO OFF
RUTA C:\WINDOWS;C:\WINDOWS\COMMAND;C:\UCDOS;C : \DOSTools;
C:\SYSTOOLS;C:\WINDOWS\COMMAND;C:C:\WINDOWS\COMMAND;C:\UCDOS;C:\DOSTools;
Esto es Esta es la primera vez que utiliza este archivo. ;C:\WINTOOLS;C:\BATCH
LH SMARTDRV.BAT, WINSTART.BAT y muchos otros archivos por lotes que se ejecutan automáticamente, AUTOEXEC.BAT también tiene muchas variantes, como .DOS .W40. OLD .PWS, etc., para adaptarse a entornos complejos y necesidades cambiantes.
==== willsort Nota del editor =============
La siguiente clasificación de comandos deja mucho que desear. El comando @ en los comandos comunes no es un comando, y los comandos comunes como dir y copiar no están incluidos, mientras que 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. Otro tipo de comando entre los comandos internos y los comandos externos que están especializados o se usan comúnmente para el procesamiento por lotes se puede denominar "comandos de procesamiento por lotes".
El siguiente es un extracto del archivo de ayuda de MS-DOS 6.22 sobre "Comandos por lotes". Por supuesto, algunos de los conceptos y definiciones están algo desactualizados.
Comandos por lotes
Un archivo por lotes o programa por lotes es un archivo que contiene el texto de varios comandos de MS-DOS y tiene una extensión .BAT. Cuando ingresa el nombre de un programa por lotes en el símbolo del sistema, MS-DOS ejecuta los comandos en el programa por lotes como un grupo.
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 están diseñados para usarse con programas por lotes.
==========
Comandos comunes
echo, @, call, pausa, rem (consejo: use:: en lugar de rem ) son algunos de los comandos más utilizados en archivos por lotes, comencemos con ellos.
==== Nota ===========
En primer lugar, @ no es un comando, es una marca especial para el procesamiento por lotes de DOS. solo se usa para evitar retrocesos en la línea de comando.
Aquí hay algunos caracteres especiales que puede ver en la línea de comando de DOS o en el procesamiento por lotes:
Terminador de línea de comando CR(0D)
Escape(1B) Símbolo de guía de caracteres de escape ANSI p>
Espacio(20) Separador de parámetros común
Tab(09) ; = Separador de parámetros inusual
+ conector de archivo de comando COPY
* ?Archivo comodín
""Definidor de cadena
| Canalización de comandos
< > > > > Carácter de redirección de archivos
@ Máscara de retorno de línea de comando
/ Indicador de cambio de parámetro
: Indicador de pestaña de lote
% Indicador de variable de lote
En segundo lugar, :: puede servir como comentario para rem, y es es más conciso y efectivo; pero hay dos cosas a tener en cuenta:
Primero, excepto ::, cualquier línea que comience con: se procesará en lotes. Se tratará como una etiqueta y todo lo que venga después se ignorará. pero para distinguirla de las etiquetas ordinarias, se recomienda utilizar una etiqueta que no sea reconocida por goto, es decir, un carácter especial no alfabético inmediatamente después de::. Seguido de un símbolo especial no alfanumérico.
En segundo lugar, a diferencia de rem, durante la ejecución, no importa si usa echo on para activar el eco de la línea de comando, las líneas que siguen a :: no se repetirán porque el intérprete de comandos no las considera válidas. . línea de comando, por lo que en algunos casos, rem puede ser más útil que ::; además, rem puede usarse en el archivo config.sys.
======================
echo significa mostrar los caracteres después de este comando
echo off significa ejecutar todos los comandos después de esta declaración sin mostrar la línea de comando en sí
@ Similar a echo off, pero se agrega en la parte superior de cada línea de comando para indicar que la línea de comando no será se muestra cuando se ejecuta.
llamar significa llamar a otra línea de comando (solo afecta a la línea actual).
llamar llama a otro archivo por lotes (si no llama a otro archivo por lotes, no podrá volver al archivo actual después de ejecutar el archivo por lotes y no podrá ejecutar comandos posteriores desde el archivo actual).
pausa Al ejecutar esta oración se pausará la ejecución del lote y se mostrará un mensaje en la pantalla: Presione cualquier tecla para continuar....
==== Nota =====
La descripción aquí es confusa, es mejor citar directamente el comando desde la ayuda de la línea de comandos para estar más organizado
-- -----------------------
ECHO
Muestra u oculta el texto de el programa por lotes cuando el programa se está ejecutando. También se puede utilizar para permitir o suprimir la visualización de retornos de comandos.
Cuando ejecuta un programa por lotes, MS-DOS normalmente muestra (repite) los comandos del programa por lotes en la pantalla.
Esta característica se puede desactivar usando el comando ECHO.
Sintaxis
ECHO [ON|OFF]
Para mostrar un comando usando el comando echo, use la siguiente sintaxis:
ECHO [mensaje ]
Argumentos
ON|OFF
Especifica si el comando de visualización está permitido. Para mostrar la configuración actual de ECHO, utilice el comando ECHO
sin parámetros.
mensaje
Especifica el contenido de texto que MS-DOS desea mostrar en la pantalla.
------------------
CALL
Llama a un programa por lotes desde otros manejadores de lotes sin causando que el primer programa por lotes se cancele.
Sintaxis
CALL [unidad:][ruta]nombre de archivo [parámetros-batch]
Parámetros
[unidad:][ruta ]nombre de archivo
Especifica el nombre del programa por lotes que se llamará y su ubicación. La extensión del nombre del archivo debe ser .BAT.
batch-parameters
Especifique la información de la línea de comando requerida por el programa por lotes.
-------------------------------
PAUSA
Pausa la ejecución del 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 en programas de procesamiento por lotes.
Sintaxis
PAUSE
REM
Agrega un comentario en el archivo por lotes o CONFIG.SYS. El comando REM también se puede usar para enmascarar comandos (un punto y coma; también se puede usar en CONFIG.SYS
en lugar del comando REM, pero no en un archivo por lotes).
Sintaxis
REM [cadena]
Argumentos
cadena
Especifica el comando que se enmascarará o el comentario que se incluirá.
=======================
Ejemplo 1: use editar para editar un .bat, ingrese el siguiente contenido y guárdelo como c:\a.bat. Después de ejecutar el archivo por lotes, puede realizar funciones como escribir todos los archivos en el directorio raíz en a.txt, iniciar UCDOS e ingresar a WPS.
El contenido del archivo por lotes es el siguiente: Comentario del comando:
@echo off no muestra las líneas de comando posteriores ni la línea de comando actual
dir c :\*.* >a.txt Escribe la lista de archivos del disco c en a.txt
llamar a c:\ucdos\ucdos.bat llamar a ucdos
echo hola muestra "hola"
pause Pausa, espera a que la tecla continúe
rem Prepárate para ejecutar wps Nota: Prepárate para ejecutar wps
cd ucdos Ingresa al directorio ucdos
wps Ejecutar wps
Parámetros de archivos por lotes
Los archivos por lotes también pueden usar parámetros similares a las funciones C (equivalentes a los parámetros de línea de comando de los comandos DOS), que requieren el parámetro indicador "%".
%[1-9] representa el parámetro, que es una cadena separada por espacios (o tabulaciones) que se agrega al nombre del archivo cuando se ejecuta el archivo por lotes. Las variables varían de %0 a %9, donde %0 representa el comando por lotes en sí y otras cadenas de parámetros se representan en el orden de %1 a %9.
Ejemplo 2: Hay un archivo por lotes llamado f.bat en el directorio raíz C:, su contenido es el siguiente:
@echo off
formato %1
Si ejecuta C:\>f a:
entonces al ejecutar f.bat, %1 representa a:, y el formato %1 es equivalente al formato a: , entonces el comando anterior realmente ejecuta el formato a:
Ejemplo 3: un lote de archivos procesados en el directorio raíz C: se denomina t.bat y el contenido es el siguiente:
@echo off
escriba %1
escriba %2
Luego ejecute C:\>t a.txt b.txt
%1: significa a.txt
%2: representa b.txt
Por lo tanto, el comando anterior mostrará el contenido de los archivos a.txt y b.txt en secuencia.
==== NOTA ===============
En el procesamiento por lotes, los parámetros también se consideran variables, por lo que también se utiliza el signo de porcentaje como carácter principal, seguido de un número del 0 al 9 para formar una referencia de parámetro. La relación entre referencias y parámetros (como %1 y a: arriba) es similar a la relación entre punteros de variables y valores de variables. Para hacer referencia al parámetro 11 o más, se debe mover el puntero de inicio del parámetro de DOS. El comando shift hace precisamente eso, mueve el punto inicial de un parámetro al siguiente parámetro, similar a las operaciones de puntero en C: el comando shift mueve el punto inicial de un parámetro al siguiente parámetro.
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
Después de 2 turnos, arg1 también se descarta y %9 apunta a nulo. , sin referencia
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ Solo en el entorno de línea de comando del kernel nt, shift Solo admite el parámetro /n, que mueve el puntero inicial hacia adelante y hacia atrás desde el primer parámetro.
=================
Comando especial
si goto selecciona la actualización en el archivo por lotes Avanzado comandos, si puede utilizar estos comandos con mucha habilidad, 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 a (no significa no igual a, el lo mismo a continuación) Cadena especificada, si la condición es verdadera, ejecute el comando; de lo contrario, ejecute la siguiente oración.
Ejemplo: if "%1"=="a" Formatear a:
====
La ayuda de la línea de comando para if lo describe como:
IF [NOT] string1== comando string2
Hay algunos puntos a tener en cuenta aquí:
1.string1 no es necesariamente un parámetro, puede también puede ser un entorno Variables, variables de bucle y otras constantes o variables de cadena
3. El comando no es necesario sintácticamente y un solo espacio después de la cadena2 constituye una línea de comando válida
4.
=============================
2. [ruta\ ]nombre de archivo El comando a ejecutar
Si el archivo especificado existe, la condición es verdadera y se ejecuta el comando; de lo contrario, se ejecuta 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 utilizar el siguiente uso:
Si el El comando existe
dispositivo se refiere al dispositivo que se ha cargado en el sistema DOS, generalmente bajo win98:
AUX, PRN, CON, NUL
COM1, COM2, COM3, COM4
LPT1, LPT2, LPT3, LPT4
XMSXXXX0, EMMXXXX0
A: B: C: ...
CLOCK$, CONFIG$, DblBuff $, IFS$HLP$
Los detalles pueden ser ligeramente diferentes según el entorno de hardware y software, pero para utilizar estos nombres de dispositivos, debe asegurarse de que se cumplan los tres siguientes Los puntos son verdaderos:
1. El dispositivo realmente existe (excepto los dispositivos de virtualización de software)
2. El dispositivo está cargado (el controlador está cargado). El controlador está cargado (los dispositivos estándar están definidos de forma predeterminada, como aux, prn, etc.)
3. El dispositivo está listo (principalmente a: b: ..., com1..., lpt1. .. . etc.
Puedes usar el comando mem/d | find "device" /i para ver los dispositivos cargados en el sistema
Además, en el sistema DOS, el dispositivo también se considera un archivo especial. El archivo también se puede llamar dispositivo de caracteres porque los dispositivos y archivos se administran a través de identificadores. El identificador es un nombre, similar al nombre de un archivo, pero el identificador no se utiliza. La gestión se utiliza para la gestión de la memoria. La llamada carga del dispositivo se refiere a la asignación de referencias a identificadores en la memoria.
====================. ===============
3. if nivel de error
Muchos programas de DOS devolverán un Los números representan la ejecución resultados del programa (o el estado del programa), y el comando if errorlevel se usa para determinar el valor de retorno del programa y determinar la ejecución de diferentes comandos en función de diferentes valores de retorno (los valores de retorno deben (se organizará en orden descendente). Si es igual al número especificado, se cumple la condición 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 <. /p>
==== Nota ======= ====
El orden de los valores de retorno de mayor a menor no es necesario. Solo se usa al ejecutar. el comando goto. Cuando se usa set como comando de ejecución, generalmente está ordenado de pequeño a grande. Si necesita colocar el código de retorno, por ejemplo, para configurar el código de retorno como una variable de entorno, use la siguiente secuencia. :
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
if errorlevel 4 set el=4
if errorlevel 5 set el=5
...
Por supuesto, también puedes usar el siguiente bucle en su lugar, el principio es el mismo:
para %%e en (1 2 3 4 5 6 7 8...) hazlo si el nivel de error %%e establece el=%%e
Para obtener un método más eficiente y conciso, consulte mi otro artículo sobre cómo obtener el nivel de error
Esto sucede porque el valor de comparación de if errorlevel no es igual al código de retorno, pero es mayor que el código de retorno.
Debido a las características de salto de goto, ordenar de pequeño a grande provocará un salto en un código de retorno más pequeño y debido a las características de "repetición" del comando set, ordenar de grande a pequeño provocará que se "cubra" un código de retorno más pequeño; " uno más grande. código de retorno.
Además, aunque el comando if errorlevel=
= ============================
2.
Por ejemplo:
ir al final
:end
echo este es el final
La etiqueta consta de ":string" definición, la línea donde se encuentra la etiqueta no se ejecutará.
==== willsort Nota del editor
La etiqueta generalmente se traduce como "etiqueta", pero esta traducción no es ampliamente reconocida.
goto se puede usar con : para saltar durante la ejecución, o con if para bifurcar condicionalmente la ejecución. Se pueden usar múltiples ifs para agrupar comandos, similar a la estructura de cambio de caso en lenguaje C o la estructura de selección de caso en lenguaje básico. La agrupación de comandos estructurados a gran escala se puede usar para implementar funciones en lenguajes de alto nivel. La siguiente es una comparación de las estructuras de sintaxis del procesamiento por lotes y C/Basic:
Procesamiento por lotes C/Basic
goto&: goto&:
goto&:&if if{}&else {}/ if&elseif&. endif
goto&:&if&elseif&. endif
goto&:&if... cambiar&case / seleccionar caso
goto&:&if&set&envar. ..función() / función(),sub()
=============================== ====
3. Seleccione este comando para permitir al usuario ingresar un carácter (para selección) y devolver diferentes niveles de error según la selección del usuario.
Este comando permite al usuario ingresar un carácter (para selección) y devuelve diferentes niveles de error según la selección del usuario.
Nota: El comando de selección es un comando externo proporcionado por DOS o Windows. La sintaxis del comando de selección en diferentes versiones es ligeramente diferente, consulte el uso.
Sintaxis del comando de selección (esta sintaxis es la sintaxis del comando de selección en Windows 2003, y la sintaxis del comando de selección en otras versiones es aproximadamente la misma):
ELECCIÓN [/ Opciones C] [/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.
Lista de parámetros:
/C elecciones Especifica la lista de opciones a crear. La lista predeterminada es "YN".
/N Oculta la lista de opciones cuando se le solicita. Muestra la información antes del mensaje y la opción
permanece habilitada.
/CS permite opciones que distinguen entre mayúsculas y minúsculas. De forma predeterminada, la 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 se realiza ninguna pausa y se selecciona la opción predeterminada
.
/D opción especifica la opción predeterminada después de nnnn segundos.
Los caracteres deben estar en el conjunto de opciones especificado con /C elección
; además, nnnn debe especificarse con /T.
/M texto Especifica la información que se mostrará antes del mensaje. Si no se especifica, la herramienta simplemente
mostrará el mensaje.
/?Mostrar información de ayuda.
Nota:
La variable de entorno ERRORLEVEL se establece en el índice de la clave seleccionada del conjunto de selección.
La primera opción de la lista devuelve 1, la segunda opción devuelve 2, y así sucesivamente. La herramienta emitirá una advertencia si la tecla presionada por el usuario no es una selección válida.
Si la herramienta detecta una condición de error, devuelve un
ERRORLEVEL de 255. Si el usuario presiona Ctrl+Interrupción o Ctrl+C, la herramienta devolverá un ERRORLEVEL de 0
. Cuando se utiliza el parámetro ERRORLEVEL en un programa por lotes, los parámetros se ordenan en orden descendente
.
Ejemplo:
ELECCIÓN /?
ELECCIÓN /C YNC /M "Presione Y para confirmar, N para confirmar y C para cancelar".
p>
CHOICE /T 10 /C ync /CS /D y
CHOICE /C ab /M "Para la opción 1, elija a, para la opción 2, elija b." p>
CHOICE /C ab /N /M "Para la opción 1, elija a, para la opción 2, elija b."
CHOICE /C ab /N /M "Para la opción 1 , elija a."
ELECCIÓN /C ab /N /M "Para la opción 1, elija a." 1, elija b. Opción 1, elija a, opción 2, elija b "
==== ordenará Editar ==================. =============
He enumerado la ayuda de las opciones en Win98 para distinguirlas
Espera a que el usuario elija
Espera a que el usuario elija una de un conjunto de opciones.
ELECCIÓN [/C[:]opciones] [/N] [/S] [/T[:]c,nn] [texto]
/C[:]opciones Especifique las pulsaciones de teclas permitidas. El valor predeterminado es YN
Especifica las pulsaciones de teclas permitidas. El valor predeterminado es YN
/N no muestra la selección y ? al final de la cadena de solicitud
No muestra la selección y ?
/S seleccionará Las claves se consideran que distinguen entre mayúsculas y minúsculas.
T[:]c,nn Cambiar la selección predeterminada a c después de nn segundos
Cambiar la selección predeterminada a c después de nn segundos
texto Para solicitar cadena para mostrar
Cadena de mensaje para mostrar
ERRORLEVEL se establece en el desplazamiento de la pulsación de tecla del usuario.
Si ejecuto el comando CHOICE /C YNC /M "Presione Y para confirmar, N para confirmar, C para cancelar".
La pantalla muestra:
Presione Y para confirmar, N para no y C para cancelar. Presione N para confirmar, N para cancelar y C para cancelar.
[S,N,C]?
Ejemplo: test.bat mostrará el siguiente contenido (tenga en cuenta que cuando se utiliza if errorlevel para determinar el valor de retorno, el valor de retorno se organizará en orden descendente):
@echo off
elección /C dme /M "defrag,mem,end"
si nivel de error 3 ir a fin
si nivel de error 2 ir a mem
si el nivel de error 1 es ir a desfragmentar
:defrag
c:
:defrag
ir al final
:mem
mem
goto end
:end
echo adiós
Si este lote se ejecuta, mostrará "defrag, mem,end[D,M,E]?". El usuario puede seleccionar d m e, y luego la declaración if emitirá un juicio basado en la elección del usuario d representa la ejecución del segmento del programa marcado por defrag. , m representa la ejecución del segmento del programa marcado por mem, y e indica que el segmento del programa marcado por final se ejecuta. El punto final al final de cada segmento del programa saltará a la marca de final del programa y luego se mostrará el programa. Adiós para finalizar la operación por lotes.
4. El comando de bucle for ejecutará el mismo comando varias veces siempre que se cumplan las condiciones.
Sintaxis:
Ejecutar un comando específico en cada archivo de un grupo.
FOR %%variable IN (establecer) comando DO [command-parameters]
%%variable especifica un parámetro reemplazable de una sola letra.
(conjunto) 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
Especifica parámetros o modificadores de línea de comando para un comando específico.
Por ejemplo, el archivo por lotes contiene una línea:
para %%c en (*.bat *.txt) escriba %%c
Luego , La línea de comando mostrará el contenido de todos los archivos con extensiones bat y txt en el directorio actual.
==== ordenará la edición ====================================== ================
Cabe señalar que cuando la cadena en () no es un nombre de archivo único o múltiple, simplemente se reemplazará por un cadena, esta característica se combina con el hecho de que se pueden incrustar varias cadenas en ().
Obviamente, for puede verse como un bucle iterativo.
Por supuesto, en el entorno de línea de comandos de la serie nt/2000/xp/2003, for tiene más funciones, lo que le permite analizar la salida del comando o cadenas en el archivo, y también se incluyen muchos modificadores. utilizado para ampliar la funcionalidad de reemplazo de archivos.
============================================ = =============================
Ejemplo de lote
1.IF- EXIST
1) Primero cree un archivo test1.bb en C:\ Notepad.
Cree el archivo por lotes test1.bat en C:\ con el siguiente contenido:
@echo off
IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT
SI NO EXISTE \AUTOEXEC.BAT ECHO \AUTOEXEC no existe
Luego ejecútelo:
C:\>TEST1.BAT
Si AUTOEXEC Si el archivo .BAT existe en C:\, se muestra su contenido. Si no existe, el proceso por lotes le indicará que 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
Ejecutar:
C.\TEST2 AUTOEXEC.BAT
Este comando se ejecuta como arriba.
Descripción:
(1) IF EXIST se utiliza para probar si el archivo existe, el formato es
IF EXIST [ruta+nombre de archivo] comando p>
(2)%1 en el archivo test2.bat es el parámetro y DOC es el nombre del archivo. %1 en el archivo 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 el comando test2 en sí. Esto es un poco como los parámetros reales y). Parámetros formales en programación En cuanto a la relación entre parámetros, %1 es un parámetro formal y AUTOEXEC.BAT es un parámetro real.
==== ordenará la edición ====================================== ================
DOS no tiene un límite de "permitir 9 parámetros por lotes". El número de parámetros solo está limitado por la longitud del comando. línea y la capacidad de procesamiento del comando de llamada. Sin embargo, en el programa por lotes, solo podemos hacer referencia a 10 parámetros al mismo tiempo, porque DOS solo proporciona referencias de parámetros de %0~%9.
============================================ = =============================
3) Crea otro archivo llamado TEST3.BAT con el siguiente contenido :
@echo desactivado
IF "%1" == "A" ECHO XIAO
IF "%2" == "B" ECHO TIAN
IF "%3" == "C" ECHO XIN
Si ejecutas:
C:\>TEST3 A B C
El La pantalla mostrará:
"TEST3":
XIAO
TIAN
XIN
Si ejecuta:
p>C:\>TEST3 A B
La pantalla muestra
XIAO
TIAN
Durante ejecute este comando, DOS asigna una cadena vacía al parámetro %3
2.
2.IF-ERRORLEVEL
Cree TEST4.BAT con lo siguiente. contenido:
@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:\
IF ERRORLEVEL 1 Error al copiar el archivo ECHO
IF ERRORLEVEL 0 ECHO exitoso Copie el archivo
Luego ejecute el archivo:
C:\>TEST4
Si el archivo se copia exitosamente, se mostrará la pantalla "El archivo se copió correctamente", de lo contrario mostrará "Error al copiar el archivo".
Si utiliza ERRORLEVEL para probar el valor de retorno de su último comando de DOS, tenga en cuenta que es solo el valor de retorno del último comando y que los valores de retorno deben juzgarse en orden descendente.
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 usó Ctrl-c para cancelar la operación de copia
IF ERRORLEVEL 3 ECHO Un error predeterminado impide la operación de copia del archivo
IF ERRORLEVEL 4 ECHO Se produce un error de escritura durante la copia
Independientemente de si la copia se realizó correctamente o no, se producen las siguientes condiciones:
Copiar archivo no encontrado
El usuario cancela la operación de copia con Ctrl-c
El error preestablecido impide la operación de copia del archivo
Se mostrará un error de escritura en el disco durante la 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 Archivo de copia de seguridad no encontrado
2 La copia de seguridad no se puede completar debido a un conflicto de archivos ****
3 El usuario usa Ctrl-c para cancelar la copia de seguridad
4 Operación de copia de seguridad cancelada debido a un error fatal
4 Error de copia de seguridad
diskcomp
0 La comparación de discos es la misma
1 La comparación de discos es diferente
2 El usuario usa Ctrl- para cancelar la operación de comparación c para cancelar la operación de comparación
3 Cancelar la comparación debido a un error fatal
4 Abortar la comparación debido a un error preestablecido
diskcopy
0 La operación de copia del disco se realizó correctamente
1 Error de lectura/escritura de disco no fatal
2 El usuario presiona ctrl-c para finalizar la operación de copia
3 Copia del disco cancelada debido a un error de procesamiento fatal
4 Error preestablecido que impide la operación de copia
Formato
0 Formato exitoso
3 usuarios