El shell de comandos es un programa de software independiente que proporciona comunicación directa entre el usuario y el sistema operativo. La interfaz de usuario del shell de comandos no es gráfica y proporciona el entorno en que se ejecutan aplicaciones y utilidades basadas en caracteres. El shell de comandos ejecuta programas y muestra su resultado en pantalla mediante caracteres individuales similares al intérprete de comandos de MS-DOS Command.com. El shell de comandos de los sistemas operativos de servidor Windows utiliza el intérprete de comandos Cmd.exe, que carga aplicaciones y dirige el flujo de información entre ellas, para traducir los datos de entrada del usuario a un formato que el sistema operativo reconozca.
Puede usar el shell de comandos para crear y modificar archivos por lotes (también llamados secuencias de comandos) para automatizar tareas rutinarias. Por ejemplo, puede usar secuencias de comandos para automatizar la administración de cuentas de usuario o las copias de seguridad nocturnas. También puede usar la versión de línea de comandos de Windows Script Host, CScript, para ejecutar secuencias de comandos más complejas en el shell de comandos. Para obtener más información, vea Ejecutar Windows Script Host. Puede realizar operaciones con más eficacia utilizando archivos por lotes que con la interfaz de usuario. Los archivos por lotes aceptan todos los comandos disponibles en la línea de comandos. Para obtener más información acerca de los archivos por lotes y las secuencias de comandos, vea Usar archivos por lotes.
Puede personalizar la ventana del símbolo del sistema para visualizarla con más facilidad y aumentar el control sobre la forma en que ejecuta los programas. Para obtener más información acerca de cómo personalizar la ventana del símbolo del sistema, vea Configurar el símbolo del sistema.
Utilizar la sintaxis de comandos
La sintaxis aparece en el orden en que debe escribir un comando y los parámetros que lo siguen. El ejemplo siguiente del comando xcopy muestra diversos formatos de la sintaxis:
xcopy origen [destino] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:MM-DD-AAAA]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:archivo1[+[archivo2]][+[archivo3]] [{/y | /-y}] [/z]
La tabla siguiente explica cómo interpretar los diferentes formatos de texto.
Leyenda de formato
Formato | Significado |
---|---|
Cursiva | Información que debe suministrar el usuario |
Negrita | Elementos que debe escribir el usuario exactamente como se muestran |
Puntos suspensivos (...) | Parámetro que se puede repetir varias veces en una línea de comandos |
Entre corchetes ([]) | Elementos opcionales |
Entre llaves ({}); opciones separadas por barras verticales (|). Ejemplo: {par|impar} | Conjunto de opciones de las que el usuario debe elegir sólo una |
Fuente Courier | Código o resultado del programa |
Utilizar varios comandos y símbolos de procesamiento condicional
Puede ejecutar varios comandos desde una línea de comandos o secuencia de comandos si utiliza símbolos de procesamiento condicional. Al ejecutar varios comandos con símbolos de procesamiento condicional, los comandos que hay a la derecha del símbolo de procesamiento condicional actúan basándose en el resultado del comando que hay a la izquierda del símbolo de procesamiento condicional. Por ejemplo, puede ejecutar un comando solamente si el anterior causa un error. También puede ejecutar un comando solamente si el anterior es correcto.
Puede usar los caracteres especiales enumerados en la tabla siguiente para pasar varios comandos.
Carácter | Sintaxis | Definición |
---|---|---|
& [...] | comando1 &comando2 | Utilícelo para separar distintos comandos en una misma línea de comandos. Cmd.exe ejecuta el primer comando y después el segundo comando. |
&& [...] | comando1 &&comando2 | Utilícelo para ejecutar el comando que hay a continuación de && sólo si el comando que hay antes del símbolo es correcto. Cdm.exe ejecuta el primer comando y, a continuación, ejecuta el segundo comando solamente si el primero se completa correctamente. |
|| [...] | comando1 || comando2 | Utilícelo para ejecutar el comando que hay a continuación de || sólo si el comando que hay antes del símbolo || es erróneo. Cmd.exe ejecuta el primer comando y, a continuación, ejecuta el segundo comando solamente si el primer comando no se completó correctamente (recibe un código de error mayor que cero). |
( ) [...] | ( Command1 & Command2) | Utilícelo para agrupar o anidar varios comandos. |
; o , | comando1 parámetro1;parámetro2 | Utilícelo para separar parámetros de comandos. |
Notas
- Los caracteres "y" comercial, (&), barra vertical (|) y paréntesis ( ) son caracteres especiales que deben ir precedidos del carácter de escape (^) o de comillas cuando se pasan como argumentos.
- Si un comando completa una operación correctamente, devuelve un código de salida cero (0) o no devuelve ningún código de salida. Para obtener información acerca de los códigos de salida, vea Utilizar los Kits de recursos e implementación de Microsoft Windows.
Shells de comandos anidados
Puede anidar shells de comandos en Cmd.exe si abre una nueva instancia de Cmd.exe en el símbolo del sistema. De forma predeterminada, cada instancia de Cmd.exe hereda el entorno de su aplicación Cmd.exe principal. Al anidar ejecuciones de Cmd.exe, puede realizar cambios en el entorno local y sin afectar a la aplicación primaria de Cmd.exe. Esto permite preservar el entorno original de Cmd.exe y volver a él cuando termine el shell de comandos anidados. Los cambios que realice en el shell de comandos anidados no se guardan.
Para anidar una shell de comandos, escriba en el símbolo del sistema:
cmd
Aparecerá un mensaje similar al siguiente:
Microsoft (R) Windows Server 2003, Standard Edition (TM)(C) Copyright 1985-2002 Microsoft Corp.
Para cerrar el shell de comandos anidados, escriba exit.
Podrá localizar cambios más adelante en una ejecución de Cmd.exe (o en una secuencia de comandos) si utiliza los comandos setlocal y endlocal.Setlocal crea un ámbito local y endlocal termina el ámbito local. Los cambios que realice en el ámbito de setlocal y endlocal se descartan y, por lo tanto, dejan el entorno original sin modificar. Puede anidar estos dos comandos hasta un máximo de 32 niveles. Para obtener más información acerca de los comandos setlocal y endlocal, vea Setlocal y Endlocal.
Utilizar variables de entorno con Cmd.exe
El entorno del shell de comandos Cmd.exe se define mediante variables que determinan el comportamiento del shell de comandos y del sistema operativo. Puede definir el comportamiento del entorno del shell de comandos o de todo el entorno del sistema operativo si utiliza dos tipos de variables de entorno, de sistema y locales. La variables de entorno de sistema definen el comportamiento del entorno global del sistema operativo. Las variables de entorno locales definen el comportamiento del entorno de la instancia actual de Cmd.exe.
Las variables de entorno del sistema están preestablecidas en el sistema operativo y se encuentran disponibles para todos los procesos del sistema operativo de servidor Windows. Solamente los usuarios con credenciales administrativas pueden cambiar variables del sistema. Estas variables se utilizan normalmente en secuencias de comandos de inicio de sesión.
Las variables de entorno locales sólo están disponibles cuando el usuario para el que se crearon ha iniciado sesión en el equipo. Las variables locales establecidas en la sección HKEY_CURRENT_USER sólo son válidas para el usuario actual, pero definen el comportamiento del entorno global del sistema operativo.
La lista siguiente describe los diversos tipos de variables en orden descendente de prioridad:
- Variables de sistema integradas
- Variables del sistema de la sección HKEY_LOCAL_MACHINE
- Variables locales de la sección HKEY_CURRENT_USER
- Todas las variables de entorno y rutas de acceso establecidas en el archivo Autoexec.bat
- Todas las variables de entorno y rutas de acceso establecidas en una secuencia de comandos de inicio de sesión (si existe alguna)
- Variables utilizadas interactivamente en una secuencia de comandos o un archivo por lotes
En el shell de comandos, cada instancia de Cmd.exe hereda el entorno de su aplicación principal. Por lo tanto, puede cambiar las variables en el nuevo entorno de Cmd.exe sin que afecte al entorno de la aplicación principal.
En la tabla siguiente se enumeran las variables de entorno locales y del sistema para los sistemas operativos de servidor de Windows.
Variable | Tipo | Descripción |
---|---|---|
%ALLUSERSPROFILE% | Local | Devuelve la ubicación de perfil Todos los usuarios. |
%APPDATA% | Local | Devuelve la ubicación en que las aplicaciones guardan los datos de forma predeterminada. |
%CD% | Local | Devuelve la cadena del directorio actual. |
%CMDCMDLINE% | Local | Devuelve la línea de comandos exacta utilizada para iniciar el Cmd.exe actual. |
%CMDEXTVERSION% | Sistema | Devuelve el número de versión de Extensiones del procesador de comandos actual. |
%COMPUTERNAME% | Sistema | Devuelve el nombre del equipo. |
%COMSPEC% | Sistema | Devuelve la ruta de acceso exacta al ejecutable del shell de comandos. |
%DATE% | Sistema | Devuelve la fecha actual. Utiliza el mismo formato que el comando date /t. Generado por Cdm.exe. Para obtener más información acerca del comando date, vea Fecha. |
%ERRORLEVEL% | Sistema | Devuelve el código de error del último comando utilizado. Usualmente, los valores distintos de cero indican que se ha producido un error. |
%HOMEDRIVE% | Sistema | Devuelve la letra de unidad de la estación de trabajo local del usuario conectada al directorio principal del usuario. Se establece según el valor del directorio principal. El directorio principal del usuario se especifica en Usuarios y grupos locales. |
%HOMEPATH% | Sistema | Devuelve la ruta de acceso completa del directorio principal del usuario. Se establece según el valor del directorio principal. El directorio principal del usuario se especifica en Usuarios y grupos locales. |
%HOMESHARE% | Sistema | Devuelve la ruta de acceso de red del directorio principal compartido del usuario. Se establece según el valor del directorio principal. El directorio principal del usuario se especifica en Usuarios y grupos locales. |
%LOGONSERVER% | Local | Devuelve el nombre del controlador de dominio que validó la sesión actual. |
%NUMBER_OF_PROCESSORS% | Sistema | Especifica el número de procesadores instalados en el equipo. |
%OS% | Sistema | Devuelve el nombre del sistema operativo. En Windows 2000 se muestra el sistema operativo Windows NT. |
%PATH% | Sistema | Especifica la ruta de acceso de búsqueda para los archivos ejecutables. |
%PATHEXT% | Sistema | Devuelve una lista de extensiones de archivo que el sistema operativo considera como ejecutables. |
%PROCESSOR_ARCHITECTURE% | Sistema | Devuelve la arquitectura de chip del procesador. Valores: x86 o IA64 (basado en Itanium). |
%PROCESSOR_IDENTFIER% | Sistema | Devuelve una descripción del procesador. |
%PROCESSOR_LEVEL% | Sistema | Devuelve el número de modelo del procesador instalados en el equipo. |
%PROCESSOR_REVISION% | Sistema | Devuelve el número de revisión del procesador. |
%PROMPT% | Local | Devuelve la configuración del símbolo del sistema del intérprete actual. Generado por Cmd.exe. |
%RANDOM% | Sistema | Devuelve un número decimal aleatorio entre 0 y 32767. Generado por Cmd.exe. |
%SYSTEMDRIVE% | Sistema | Devuelve la unidad que contiene el directorio raíz del sistema operativo de servidor de Windows (es decir, la raíz del sistema). |
%SYSTEMROOT% | Sistema | Devuelve la ubicación del directorio del sistema operativo de servidor de Windows. |
%TEMP% y %TMP% | Sistema y usuario | Devuelve los directorios temporales predeterminados que utilizan las aplicaciones disponibles para los usuarios conectados actualmente. Algunas aplicaciones requieren TEMP y otras requieren TMP. |
%TIME% | Sistema | Devuelve la hora actual. Utiliza el mismo formato que el comando time /t. Generado por Cdm.exe. Para obtener más información acerca del comando time, vea Time. |
%USERDOMAIN% | Local | Devuelve el nombre del dominio que contiene la cuenta de usuario. |
%USERNAME% | Local | Devuelve el nombre del usuario que ha iniciado la sesión actual. |
%USERPROFILE% | Local | Devuelve la ubicación del perfil del usuario actual. |
%WINDIR% | Sistema | Devuelve la ubicación del directorio del sistema operativo. |
Configurar las variables de entorno
Utilice el comando set para crear, cambiar, eliminar o mostrar variables de entorno. El comando set altera variables solamente en el entorno de shell actual.
Para ver una variable, escriba en el símbolo del sistema:
set nombreDeVariable
Para agregar una variable, escriba en el símbolo del sistema:
setVariableName=Value
Para eliminar una variable, escriba en el símbolo del sistema:
set nombreDeVariable =
Puede usar la mayor parte de los caracteres como valores de variables, incluido el espacio en blanco. Si utiliza los caracteres especiales <, >, |, & o ^, deberán ir precedidos del carácter de escape (^) o de comillas. Si utiliza comillas, se incluyen como parte del valor debido a que todo lo que sigue al signo igual se toma como un valor. Tenga en cuenta los siguientes ejemplos:
- Para crear el valor de variable nuevo&nombre, escriba:
set nombreDeVariable=nuevo&nombre - Para crear el valor de variable "nuevo&nombre", escriba:
set nombreDeVariable="nuevo&nombre" - Si escribe set nombreDeVariable=nuevo&nombre en el símbolo del sistema, aparecerá un mensaje de error similar al siguiente:
"'nombre' no se reconoce como comando interno o externo, un programa o un archivo por lotes ejecutable."
Los nombres de variables no distinguen entre mayúsculas y minúsculas. Sin embargo, set muestra la variable exactamente como se escribió. Puede combinar letras en mayúsculas y minúsculas en los nombres de variables para que el código sea más legible (por ejemplo, NombreUsuario).
Comentarios