Finalidad:Seleccionar comandos para ejecutar en un archivo por lotes según un valor

 

Formato:SWITCH expresión

CASE valor1 [.O. valor2 [.O. valor3 ...]]

[comandos]

CASE valor4

[comandos]

CASEALL

[comandos]

[POR DEFECTO

comandos]

INTERRUPTOR FINAL

 

expresiónUna variable de entorno, variable interna, función variable, cadena de texto o una combinación de estos elementos, que se utiliza para seleccionar un grupo de comandos.
valor1, valor2Un valor para probar o múltiples valores conectados con .O.
comandosUno o más comandos para ejecutar si la expresión coincide con el valor. Si utiliza varios comandos, deben estar separados por separadores de comandos o colocados en líneas separadas de un archivo por lotes.

 

Ver también: IF y IFF.

 

Uso:

 

SWITCH solo se puede utilizar en archivos por lotes. Le permite seleccionar un comando o grupo de comandos para ejecutar en función de los posibles valores de una variable o una combinación de variables y texto.

 

El comando SWITCH siempre va seguido de un expresión creado a partir de variables de entorno, variables internas, funciones variables y cadenas de texto, y luego mediante una secuencia de declaraciones CASE que coinciden con las posibles valores of expresión, un valor PREDETERMINADO opcional declaración, y rescindido por una Declaración ENDSWITCH. Cada declaración CASE y la declaración DEFAULT pueden ir seguidas de una o más comandos.

 

TCC evalúa expresión y compara secuencialmente con la lista de valores en las declaraciones CASE, comenzando por la primera. Las reglas de comparación son las mismas que se utilizan para EQ operador relacional; ver Comparaciones numéricas y de cadenas para detalles. Si se encuentra una coincidencia, el comandos Se ejecutan los siguientes comandos CASE coincidentes y el archivo por lotes continúa con los comandos que siguen a ENDSWITCH. Si hay coincidencias en declaraciones CASE posteriores, se ignoran. El propuesta de en una declaración CASE pueden ser literales, variables o funciones (que se expandirán antes de la comparación con la expresión SWITCH).

 

Las declaraciones CASE pueden incluir comodines y expresiones regulares.

 

La declaración CASEALL opcional debe seguir a todas las declaraciones CASE pero preceder a DEFAULT. Si se ejecutó algún bloque CASE anterior, también se ejecutará CASEALL; de lo contrario se ignora.

 

Si durante la búsqueda de una coincidencia se encuentra la declaración DEFAULT, el comandos, si los hay, se ejecutan a continuación y el archivo por lotes continúa con los comandos que siguen a ENDSWITCH. Se ignoran todas las declaraciones CASE después de la declaración DEFAULT.

 

Los comandos SWITCH se pueden anidar.

 

Puede salir de todo el procesamiento SWITCH / ENDSWITCH usando GOTO a una línea más allá del último ENDSWITCH.

 

Restricciones

 

Cada instrucción SWITCH, CASE, DEFAULT y ENDSWITCH debe estar en una línea separada y no puede ir seguida de un separador de comando. (Esta es la razón por la que SWITCH no se puede usar en alias). No hay restricciones en el uso de agrupaciones y separadores de comandos en el comandos para un CASO o POR DEFECTO.

 

Puede vincular una lista de valores en una única declaración CASE con .OR., pero no con .AND. o .XOR..

 

Ejemplos:

 

El siguiente fragmento del archivo por lotes muestra un mensaje si el usuario presiona A, otro si el usuario presiona B or C, y una tercera si el usuario pulsa cualquier otra tecla:

 

inkey Introduzca una pulsación de tecla: %%key

cambiar tecla %

caso A

  eco es una A

caso B .o. C

  echo Es B o C

tu préstamo estudiantil

  echo No es ninguno de A, B o C

interruptor final

 

En el ejemplo anterior, el valor de una única variable de entorno se utilizó para expresión. Sin embargo, puedes utilizar otros tipos de expresiones si es necesario. La primera instrucción SWITCH a continuación selecciona un comando para ejecutar en función de la longitud de una variable, y la segunda basa la acción en una cadena de texto entre comillas almacenada en una variable de entorno:

 

cambiar %@len[%var1]

caso 0

  eco Falta var1

caso 1

  eco Un solo carácter

...

interruptor final

 

 

cambiar "%cadena1"

caso "Esto es una prueba"

  eco Cadena de prueba

caso "El veloz zorro marrón"

  echo es el zorro

...

interruptor final