Cada vez que escribes algo en la línea de comando y presionas el botón Participar o incluir un comando en un archivo por lotes, pasa un comando a TCC, que debe determinar cómo ejecutarlo. Si comprende el proceso general que se utiliza, podrá aprovechar al máximo los comandos. Comprender estos pasos puede resultar especialmente útil cuando se trabaja con alias complejos o comandos de archivos por lotes.

 

TCC Pasa por varios pasos al analizar una línea de comando. Antes de comenzar, escribe la línea de comando completa (que puede contener múltiples comandos) al archivo de registro del historial si se ha habilitado el registro del historial (con el REGISTRO /H comando) y el comando no proviene de un archivo por lotes. Luego, el primer comando se aísla para su procesamiento. Los siguientes pasos describen el procesamiento básico requerido para cada comando. Durante ese procesamiento, es posible que se activen tareas de análisis adicionales como se indica y algunos pasos pueden repetirse varias veces.

 

1.Separando el comando de su cola

 

TCC comienza dividiendo el comando en un comando nombre y un comando cola. El nombre del comando es la primera palabra del comando y la cola es todo lo que sigue al nombre del comando. Por ejemplo, en la línea de comando

 

directorio *.txt /2/p/v

 

El nombre del comando es dir, y la cola del comando es "*.txt /2/p/v". En algunos casos, el analizador podrá comprender la sintaxis incorrecta, como directorio/w, pero siempre debe haber al menos un espacio entre el nombre del comando y sus parámetros.

 

2.Alias ​​en expansión

 

Siguiente, TCC intenta hacer coincidir el nombre del comando con su lista de alias. Si encuentra una coincidencia entre el nombre del comando y uno de los alias que ha definido, reemplaza el nombre del comando con el contenido del alias. Esta sustitución se realiza internamente y normalmente no es visible para usted; sin embargo, puede ver una línea de comando con alias expandidos presionando Ctrl-W después de ingresar el comando cuando se le solicite.

 

Si el alias incluía parámetros (%1, %2, etc.), los valores de los parámetros se completan con el texto en la línea de comando y cualquier parámetro utilizado en este proceso se elimina de la línea de comando. El proceso de reemplazar un nombre de comando que hace referencia a un alias con el contenido del alias y completar los parámetros del alias se llama alias. expansión.

 

Esta expansión de un alias crea un nuevo nombre de comando: la primera palabra del alias. Este nuevo nombre de comando se prueba nuevamente con la lista de alias y, si se encuentra una coincidencia, el contenido del nuevo alias se expande al igual que el primer alias. Este proceso, llamado anidado alias expansión, continúa hasta que el nombre del comando ya no hace referencia a un alias.

 

3.Variables en expansión

 

El siguiente paso es localizar los parámetros del archivo por lotes, las variables de entorno, las variables internas o las funciones variables en el comando y reemplazar cada uno con su valor (consulte "Entorno: variables y funciones"). Este proceso se llama variable. expansión y normalmente no es visible. Sin embargo, puede ver una línea de comando expandida presionando Ctrl-X después de ingresar el comando cuando se le solicite.

 

El proceso de expansión de variables se modifica para ciertos comandos internos, como EXCEPTO, IFy GLOBAL. Estos comandos siempre van seguidos de otro comando, por lo que la expansión variable se realiza por separado para el comando original y el comando que le sigue.

 

4.Identificar un complemento o comando interno

 

Una vez que haya terminado la expansión variable, TCC a continuación intenta hacer coincidir el nombre del comando resultante con su lista de funciones de biblioteca, plugin comandos o comandos internos. Si no tiene éxito, sabe que tendrá que buscar un archivo por lotes o un programa externo para ejecutar su comando.

 

Puede especificar un complemento en particular para ejecutar anteponiendo el nombre de la función/variable/comando con el nombre del complemento y un $. Por ejemplo:

 

eco %_myplugin$variable

echo %@myplugin$func[abc]

miplugin$micomando

 

5.Mostrando el comando

 

Cuando todos los alias y variables de entorno se hayan expandido, TCC repetirá el comando completo en la pantalla (si se ha habilitado el eco de línea de comando) y lo escribirá en el archivo de registro (si el comando registro ha sido encendido).

 

6.Procesamiento de redirección y tuberías.

 

Antes de que pueda ejecutar su comando, TCC debe escanear la cola del comando para ver si incluye redirección or tubería. Si es así, los interruptores internos adecuados están configurados para enviar la salida a un dispositivo alternativo o a un archivo en lugar de a la pantalla. En este punto se inicia un segundo proceso, si es necesario, para recibir cualquier salida canalizada.

 

7.Procesamiento de caracteres de escape

 

En esta etapa, cualquier resto Personajes de escape son procesados. Sin embargo, esto también podría haber ocurrido dentro de algunas de las funciones variables (como @SI) que probablemente pasen cadenas de escape en sus parámetros. Si hace referencia a uno de ellos en un ECHO o comando similar, necesita escapar dos veces ("^^") o usar SET DOS /X para evitar una evaluación prematura. Pruebe cuidadosamente esas situaciones para asegurarse de que los resultados sean los esperados.

 

8.Ejecutando el comando

 

Finalmente, es hora de ejecutar el comando. TCC primero buscará una coincidencia plugin nombre del comando; si no existe, intenta hacer coincidir un comando interno. De lo contrario, TCC busca un ejecutable (. EXE), un archivo por lotes o un archivo con una extensión ejecutable que coincida con el nombre del comando (consulte la descripción detallada de esta búsqueda en Archivos ejecutables y búsquedas de archivos).

 

Si el primer argumento en una línea de comando tiene el formato "env_var=value opciones de comando" (y env_var=value no coincide con un comando externo), entonces TCC establecerá la variable de entorno especificada en el valor, ejecutará el comando y luego eliminará la variable.

 

9.Limpiar

 

Una vez que el comando interno o el programa externo haya terminado, TCC guarda el resultado o el código de salida que generó el comando, limpia cualquier redirección que haya especificado y luego regresa a la línea de comando original para recuperar el siguiente comando. Cuando finalizan todos los comandos en una línea de comando, se lee la siguiente línea del archivo por lotes actual o, si no hay ningún archivo por lotes activo, se muestra el mensaje.

 

Nota: Puede deshabilitar y volver a habilitar varias partes del análisis de comandos (por ejemplo, expansión de alias, expansión de variables y redirección) con el SET DOS /X mando.