Saltar al contenido principal

Secuencias de comandos de Windows - Take Command y conceptos básicos del lenguaje CMD

Take Command proporciona un rico lenguaje de comandos en su procesador de comandos (TCC.EXE) que es altamente compatible con (y reemplaza) el procesador de comandos predeterminado de Windows CMD.EXE. Es adecuado para crear programas por lotes tanto simples como altamente sofisticados. El lenguaje también se puede utilizar en el símbolo del sistema para crear una manipulación muy poderosa en tiempo real de su computadora.

General

TCC tiene un enorme conjunto de capacidades. Estas capacidades se agrupan en tres categorías:

 Comandos internos - Estas son las construcciones primarias del lenguaje. Los comandos comunes incluyen DIR, COPIAR, MOVER, etc. TCC le brinda acceso instantáneo a más de 265 comandos internos. (CMD.EXE de Microsoft tiene alrededor de 40 comandos internos).

Comandos internos versus externos

Cuando hablamos de un comando interno, nos referimos a que el comando está integrado en el Take Command programa. Con CMD, algunos comandos, como XCOPY, son en realidad programas separados. En PowerShell, los comandos suelen ser programas externos. PowerShell requiere la instalación de un .NET Framework independiente en la computadora para que los comandos funcionen.

 variable interna - Las variables internas son variables especiales integradas en TCC para proporcionar información sobre su sistema. No se almacenan en el entorno, pero se puede acceder a ellos como si fueran variables de entorno en comandos interactivos, alias y archivos por lotes. Take Command proporciona más de 340 variables internas que pueden brindarle mucha información sobre su computadora y su funcionamiento. Estos incluyen hardware instalado, estado del hardware, estado del sistema operativo y del software, etc.

 Funciones variables - Las funciones variables son muy similares a las variables internas, pero toman uno o más parámetros (que pueden ser variables de entorno o incluso otras funciones variables). Las funciones variables son útiles en el símbolo del sistema, así como en alias y archivos por lotes para verificar los recursos disponibles del sistema, manipular cadenas y números, y trabajar con archivos y nombres de archivos. Hay más de 440 funciones variables integradas TCC.

No vamos a hablar de todas las características del TCC Idioma en este tutorial. (El manual es ¡1,300 páginas!) Asumiremos que conoce los conceptos básicos de CMD y le indicaremos algunas de las cosas que TCC funciona mejor con menos trabajo que CMD.

Comandos internos

Hay varios aspectos de TCCconjunto de comandos internos que definitivamente vale la pena mirar:

 interruptores

 Alias

 HTTP(S) y FTP(S)

 Flujo de comandos de control

 Comando PILA DE TECLAS

 Comandos de monitoreo de eventos (activadores): lo convertimos en un tutorial separado

Cada uno de estos se cubre a continuación:

1. interruptores

Los interruptores modifican los comandos dándoles instrucciones especiales. TCC tiene un superconjunto de interruptores CMD y está casi al 100%. Decimos casi, porque lamentablemente CMD no ha sido consistente de una versión a otra.

Por ejemplo, en CMD, el comando COPY tiene 7 modificadores (XCOPY tiene más). El TCC El comando COPY tiene 40 interruptores. Ejemplos de algunos de los modificadores que el comando CMD COPY no tiene incluyen:

 /N Ejecuta el comando de copia y le muestra cuál sería el resultado, pero en realidad no ejecuta el comando.

 /O Copie el archivo fuente solo si el destino no existe

 /S Copie el árbol de subdirectorios comenzando con los archivos en el directorio de origen más cada subdirectorio

 /H Copie todos los archivos coincidentes, incluidos aquellos con un conjunto de atributos ocultos o del sistema.

 /W Eliminar archivos en el directorio de destino que no existen en el directorio de origen

Estos modificadores le permiten personalizar el idioma de formas que no puede hacer con CMD. Realizan operaciones muy potentes con sólo dos o tres pulsaciones de teclas.

2. Alias

Entonces, le hemos proporcionado todos estos potentes interruptores, pero tal vez no siempre quiera tener que escribirlos.

Quizás tengas algunas formas comunes de hacer las cosas y quieras TCC para adaptar las cosas a la forma en que quieres hacerlas.

Tenemos una solución...alias. Gran parte del poder de TCC se reúne en alias, que le brindan la posibilidad de crear sus propios comandos. Un alias es un nombre que selecciona para un comando o grupo de comandos.

Los alias simples sustituyen un nuevo nombre por un comando existente. Los alias más complejos pueden redefinir la configuración predeterminada de los comandos internos o externos, operar como archivos por lotes en memoria muy rápidos y ejecutar comandos basados ​​en los resultados de otros comandos. TCC también admite alias de directorio, una forma abreviada de especificar nombres de rutas.

Los alias también pueden crear versiones personalizadas de comandos. Por ejemplo, el comando DIR puede ordenar un directorio de varias maneras. Puede crear un alias llamado DE que significa "ordenar el directorio por nombre de archivo

alias de=dir /oe /p

extensión y haga una pausa después de cada página mientras la muestra" así:

Por lo tanto, no es necesario que recuerdes todos esos interruptores. Puede configurar versiones del idioma que satisfagan sus necesidades. Por ejemplo, puede crear alias que coincidan con los comandos comunes del shell de Linux y operar de la misma manera si le resulta más cómodo.

TCC El alias difiere de CMD (y su DOSKEY externo) en un par de aspectos clave.

• Puede utilizar alias en archivos por lotes. Las macros de DOSKEY no se pueden utilizar en sus archivos por lotes.

 TCC Los alias pueden incluir expansión de variables, que no está disponible en DOSKEY. Este ejemplo crea una calculadora de línea de comando simple.

alias calc=`echo La respuesta es: %@eval[%$]

Una vez que haya ingresado el ejemplo, puede escribir CALC 4*19, por ejemplo, y verá la respuesta. La función variable %@eval[%$] será evaluado por el analizador. El texto “4*19” reemplazará el marcador de posición “$” y la función variable @eval que realiza funciones matemáticas calculará el resultado.

• Puede asignar un alias de uso común a una pulsación de tecla. Por ejemplo:

alias @Mayús-F5=*dir /2/p

Después de ingresar a este ejemplo, verá un directorio de 2 columnas con paginación cada vez que presione Shift-F5 seguido de Enter.

 TCC También permite alias de directorio. Los alias de directorio son una forma abreviada de especificar nombres de rutas. Por ejemplo, si define un alias:

alias pf:=c:\archivos de programa

Luego puede hacer referencia a los archivos en c:\program files\jpsoft ingresando pf:\jpsoft.

3. Flujo de comandos de control

Una de las áreas más débiles de CMD es el flujo de control. Estas son construcciones como IF...THEN...ELSE o DO LOOPS que le permiten desarrollar sofisticados programas por lotes. Si está creando procesos por lotes en un centro de datos, las limitaciones de CMD le impiden hacer algo sofisticado.

TCC proporciona un conjunto muy rico de construcciones que le permiten duplicar (¡o superar!) las capacidades de los shells típicos de Linux.

Los siguientes ejemplos muestran algunos de los tipos de bucles DO que puede crear:

Hacer bucles

cuenta

HACER PARA SIEMPRE

DO varname = empezar A terminar [POR paso]

HACER MIENTRAS condición

HACER HASTA la condición

HACER HASTA LA FECHA HORA fecha hora

HACER POR n [SEGUNDOS | MINUTOS | HORAS]

DO varname IN [rango...] [/I:"texto" /S[n] /A:[-|+]hsad] conjunto de archivos

DO varname IN [/T"delimitadores"] /L conjunto de cadenas

DO varname IN /C conjunto de cadenas

DO varname en el comando /P

DO varname EN @expediente

TCC también proporciona una construcción IF...THEN...ELSE muy poderosa a través del comando IFF.

Si... Entonces... Si no Construcciones

Condición IFF1 ENTONCES

conjunto de comandos1

[ELSEIFF condición2 ENTONCES conjunto de comandos2]

...

[DEMÁS

conjunto de comandos3]

ENDIFF

El alias en este ejemplo IFF verifica si el parámetro es un subdirectorio. Si es así, el alias elimina los archivos del subdirectorio y lo elimina (ingrese esto en una línea):

alias podar `iff isdir %1 entonces & del /s /x /z %1 & else & echo %1 no es un directorio! & endiff`

Este ejemplo muestra cómo funciona una construcción SWITCH. El siguiente fragmento del archivo por lotes muestra un mensaje si el usuario presiona A, otro si el usuario presiona B o C y un tercero si el usuario presiona cualquier otra tecla:

Cambiar construcciones

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

4.TECLAS

KEYSTACK toma una serie de pulsaciones de teclas y las envía a un programa o comando como si estuvieran escritas en el teclado. (No tiene equivalente en CMD). KEYSTACK se usa con mayor frecuencia para programas iniciados a partir de archivos por lotes. Por ejemplo, para iniciar Word y abrir el último documento en el que trabajó, puede usar el comando:

iniciar palabra y pila de teclas /w54 alt-f "1"

Esto provoca lo siguiente:

 inicia palabra,

 El modificador /w provoca un retraso de aproximadamente tres segundos (54 tics de reloj a aproximadamente 1/18 de segundo cada uno) para que Word se inicie.

 Coloca las pulsaciones de teclas para alt-F (menú desplegable Archivo) y 1 (abre el archivo usado más recientemente) en el búfer.

Word recibe estas pulsaciones de teclas y realiza las acciones apropiadas. Observe que los dos comandos, START y KEYSTACK, se emiten en una única línea de comando. Esto asegura que las pulsaciones de teclas se envíen a la ventana de Word, no de vuelta a Take Command.

5. FTP y HTTP

TCCLos comandos FTP y HTTP de le permiten tratar los sitios http y ftp como si fueran unidades de disco locales. Esta es una gran ventaja sobre CMD. En Trabajar en el mundo de Internet, le mostramos cómo utilizar estos comandos para crear aplicaciones prácticas de monitoreo remoto.

En su forma más simple, puede actuar como si un sitio FTP o HTTP fuera un disco local. Por ejemplo, para obtener un directorio del sitio FTP de JP Software, puede utilizar este comando:

Directorio ftp://ftp.jpsoft.com/*

El siguiente ejemplo muestra cómo incluir un nombre de usuario y una contraseña de ftp:

Directorio ftp://nombre de usuario:Esta dirección de correo electrónico está protegida contra robots de spam. Es necesario activar Javascript para visualizarla./mydir/*

Puede consultar sitios de Internet para DIR, COPY, MOVE, DEL y otros comandos. Estos comandos también funcionan con versiones seguras de FTP y HTTP.

6. Comandos de monitoreo de eventos (activadores)

Una de las funciones más poderosas de TCC Son los 8 comandos de monitoreo de eventos. Le permiten observar una amplia variedad de actividades en su computadora y "activar" procesos en acción para tratar o informar sobre problemas.

Esto se describe completamente en Usando disparadores en Take Command. Vale la pena leerlo.

 

Variables internas

Las variables internas son variables especiales integradas en TCC para proporcionar información sobre su sistema. No se almacenan en el entorno, pero se puede acceder a ellos como si fueran variables de entorno en comandos interactivos, alias y archivos por lotes.

Hay más de 330 (CMD tiene menos de 10). Los tipos clave de variables incluyen:

 Estado del hardware

 Estado del sistema operativo y del software

 Fechas y horarios

 Unidades y directorios

 códigos de error

 Pantalla, color y cursor

 Take Command estado

 Compatibilidad

A continuación se muestra un ejemplo sencillo de cómo utilizar una variable común llamada _DOW (Día de la semana):

si "%_DOW" == "lunes" llame a c:\cleanup\weekly.bat

Este ejemplo llama a otro archivo por lotes si hoy es lunes.

Antes de continuar...

Una nota rápida:

Uno de los grandes misterios de la línea de comando es el signo %. ¿Qué hace? Cuando ve un signo % delante de una variable o función, significa que el analizador debe evaluar la función y reemplazar la variable o función con su valor de texto. Entonces, en el último ejemplo, %_DOW se reemplaza con el resultado, que en este caso es LUN, MAR o lo que sea.

¿Qué tal algo más en tiempo real que puedas ejecutar en segundo plano?

HACER PARA SIEMPRE

si "%_BATTERYPERCENT" LT 25" MSGBOX La batería está baja

ENDO

Este comando se repetirá indefinidamente verificando el estado de la batería y mostrará un cuadro de mensaje si la carga de la batería se está agotando. MSGBOX es en realidad un comando muy poderoso en TCC. Compruébalo en el archivo de ayuda.

A continuación se muestra un ejemplo que comprueba si hay suficientes recursos libres antes de ejecutar una aplicación.

si %_GDIFREE es 40 entonces

echo ¡No hay suficientes recursos de GDI!

dejar de fumar

d:\midir\miaplicación

endiff

Eche un vistazo a la lista de variables internas por categoría en el archivo de ayuda.

 

Funciones variables

Las funciones variables son una de las características más poderosas de TCC. Las funciones variables son muy similares a las variables internas, pero toman uno o más parámetros (que pueden ser variables de entorno o incluso otras funciones variables).

Las funciones variables son útiles en el símbolo del sistema, así como en alias y archivos por lotes para verificar los recursos disponibles del sistema, manipular cadenas y números, y trabajar con archivos y nombres de archivos.

Hay más de 290 funciones variables agrupadas en 12 categorías. Le permiten recopilar y manipular información del sistema de formas muy poderosas. (CMD no tiene funciones variables). Recuerde... todos están integrados.

 Búfers binarios

 Fechas y horarios

 Unidades y dispositivos

 Contenido del archivo

 Nombres de archivo

 Propiedades de archivo

 Cuadros de diálogo de entrada

 Propiedades de red

 Números y aritmética

 Cadenas y caracteres

 Estado del sistema

 Utilidad

Usando funciones, TCC Puede leer y escribir archivos de texto, así como algunos archivos especiales, como el Registro de Windows o archivos .ini. En el siguiente ejemplo, leeremos un archivo .csv llamado nombres.csv (que es un archivo de texto con campos separados por comas). El archivo tiene el siguiente aspecto:

José, 100,Esta dirección de correo electrónico está protegida contra robots de spam. Es necesario activar Javascript para visualizarla.

Jane,200,jane@empresa.com

Pedro, 400,peter@empresa.com

Nuestro ejemplo leerá este archivo línea por línea y seleccionará la dirección de correo electrónico en cada línea. Luego los hará eco en la consola.

set nombre de archivo=%@expand[nombres*.csv]

grabar en @%Nombre del archivo

set correo electrónico=%@campo[",",3,%registro] eco %correo electrónico

terminar

Este código hace lo siguiente:

 La primera línea del ejemplo crea una variable con el archivo completo y la ruta del archivo .csv usando el @expandir función.

 La segunda línea utiliza un caso especial del comando DO para:

 Abra el nombre de archivo que configuramos en la primera línea con un @Nombre del archivo función

 Crea un contador de líneas que se establece en uno.

 Configure una nueva variable llamada "registro"

 Lee la primera línea de texto hasta el CR y la devuelve a “registro”

 El  @campo La función elige el tercer campo en la línea (que contiene la dirección de correo electrónico) usando un “,” como delimitador de campo y lo coloca en una variable llamada “correo electrónico”. El delimitador podría ser cualquier cosa que quisieras.

 El comando ECHO envía la dirección de correo electrónico a la consola

 ENDDO devuelve el bucle a la instrucción do, que incrementa el contador de líneas a la siguiente línea. Si es el final del archivo, finaliza el ciclo.

Este ejemplo en particular parece algo limitado, pero utilizamos una variante del mismo para procesar nuestros pedidos, crear claves de registro y enviarlas por correo electrónico a nuestros usuarios con una cantidad notablemente pequeña de código.