El post que buscas se encuentra eliminado, pero este también te puede interesar

Variables de la shell en cmd

ford_gt1000 dijo::SET [variable=[cadena]]

variable Especifica el nombre de la variable de entorno.
cadena Especifica una serie de caracteres asignados a la variable.

Escriba SET sin parámetros para ver las variables de entorno actuales.


Para utilizar el contenido de la variable, la envolveremos con los signos de porcentaje: %variable%

Ejemplo. Definimos dos variables de entorno y las utilizamos:

ford_gt1000 dijo::C:>SET micasa=Cocuments and Settingssirio
C:>CD %micasa%
Cocuments and Settingssirio>

Z:>SET m=ping -n 1 www.madrid.org
Z:>%m%
Haciendo ping a www.madrid.org [195.77.128.9] con 32 bytes de datos:

Respuesta desde 195.77.128.9: bytes=32 tiempo=46ms TTL=247

Estadísticas de ping para 195.77.128.9:
Paquetes: enviados = 1, recibidos = 1, perdidos = 0 (0% perdidos),
Tiempos aproximados de recorrido redondo en milisegundos:
mínimo = 46ms, máximo = 46ms, promedio = 46ms:


Sin argumentos, nos muestra todas las variables del entorno:

ford_gt1000 dijo::C:>SET
ALLUSERSPROFILE=Cocuments and SettingsAll Users
...
COMPUTERNAME=SIRIO
ComSpec=C:WINNTsystem32cmd.exe
...
micasa=Cocuments and Settingssirio
m=ping -n 1 www.madrid.org
...
Path=C:WINNTsystem32;C:WINNT;C:WINNTSystem32Wbem;C:WINNTsys32;C:Archivo
s de programaJavajdk1.5.0_04bin;C:Archivos de programaArchivos comunesGTK
2.0bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.VBS
...
PROMPT=$P$G
...
SystemRoot=C:WINNT
TEMP=COCUME~1sirioCONFIG~1Temp
TMP=COCUME~1sirioCONFIG~1Temp
...:


http://www.palomatica.info/juckar/microsoft/msdos/entorno/variables_de_entorno.html#w2003

Si sólo deseamos ver las que comienzan p or USER:

ford_gt1000 dijo::I:>set user
USERDOMAIN=SIRIO
USERNAME=andromeda
USERPROFILE=Cocuments and Settingssirio :


Si las extensiones de comando están habilitadas (por defecto lo están, ver la ayuda de CMD), algunas variables de entorno son dinámicas y su valor se calcula cuando se hace uso de ellas.

ford_gt1000 dijo::%CD% - se expande a la cadena del directorio actual
%DATE% - se expande a la fecha actual usando el mismo formato que el comando FECHA
%TIME% - hora actual usando el mismo formato que el comando HORA
%RANDOM% - número decimal aleatorio entre 0 y 32767
%ERRORLEVEL% - se expande al valor de NIVEL DE ERROR actual
%CMDEXTVERSION% - número de versión de las Extensiones del comando del procesador.
%CMDCMDLINE% - línea de comando que invocó el Procesador de comandos.:


ejemplos:

ford_gt1000 dijo::C:>echo %time%
11:07:54,50

c:kk>md tmp%RANDOM% tmp%RANDOM% tmp%RANDOM%
c:kk>dir
...
17/01/2006 11:13 <DIR> tmp14302
17/01/2006 11:13 <DIR> tmp10845
17/01/2006 11:13 <DIR> tmp3102
...
Voy a otro directorio y vuelvo:
Cocuments and Settingssirioprueba>set w=%CD%
Cocuments and Settingssirioprueba>cd
C:>cd %w%
Cocuments and Settingssirioprueba>:


NOTA: Ejecutando [ cmd /e:off ] abrimos una shell con las extensiones de comando deshabilitadas. Comprobar ahora como la variable %DATE% ha dejado de existir. Si ejecutamos una aplicación windows (p.ej. el NOTEPAD), hasta que no finalice la aplicación, la shell estará inoperativa: es monotarea 100% - más cosas en [ cmd /? ]

Variables locales a shell

Las variables que definamos desde una shell son locales a esa shell y a las subshells, no afectan para nada al entorno de Windows ni a las shells superiores.

Cuando cerramos una shell todos los cambios que hubiésemos hecho en las variables se pierden para siempre:

ford_gt1000 dijo::Z:>cmd abro una nueva shell

Z:>prompt [%COMPUTERNAME%] $P$G cambio la variable PROMPT
Z:>cmd si abro otra shell, hereda sus variables

Z:>exit
Z:>exit pero cuando vuelvo a la shell original ...
Z:> el prompt es el original:


Variables globales a todas las shells

Desde Windows podemos visualizar, modificar o añadir nuevas variables desde el menú de Propiedades del Sistema (icono Mi PC->Propiedades, o bien Panel de Control->Sistema), seleccionando la pestaña Avanzado, botón Variables de entorno:

Variables de la shell en cmd

Ahí podremos ver las variables definidas para el usuario particular y las variables definidas para todo el sistema.
SET aritmético

El comando SET también nos permite definir variables de entorno a partir de operaciones aritméticas simples con números enteros, ya que lleva incorporada una calculadora básica:

ford_gt1000 dijo::SET /A expresión

El modificador /A especifica que la cadena a la derecha del signo de igual es una expresión
aritmética que es evaluada. El evaluador de expresiones es bastante simple y es compatible
con las siguientes operaciones, en orden de precedencia decreciente:

() - agrupar
* / % - operadores aritméticos
+ - - operadores aritméticos
<< >> - mayús lógica
& - AND (de bits)
^ - XOR (de bits)
| - OR (de bits)
= *= /= %= += -= - asignación
&= ^= |= <<= >>=
, - separador de expresión

Si se utiliza cualquiera de los operadores lógicos o de módulo, será necesario escribir la
cadena entre comillas. Cualquier cadena que no sea numérica en la expresión, serán tratadas
como nombres de la variable de entorno cuyos valores son convertidos a números antes de ser
utilizados.
Si un nombre de la variable de entorno es especificada pero no definida en el entorno actual,
entonces se utiliza el valor cero. Esto permite hacer operaciones aritméticas con los valores
de la variable de entorno evitando el escribir todos estos signos % para obtener sus valores.:


Ejemplos:

ford_gt1000 dijo:: ¿Cuánto son 1200 euros?
J:>SET /A euros=1200, ptas=euros*166386/1000
199663

multiplicamos esa cantidad por 2 al cubo (i.e., añadimos 3 ceros "binarios" a su derecha)
J:>set /a ptas="ptas<<3" <-- las comillas son necesarias por la
1597304 ambigüedad del operador <

y si necesitamos lanzar un dado ...
J:>set /a %random% % 6 + 1
4
Podemos utilizar números hexadecimales
J:>SET /A ff=0xF0CA + 0xFEA
65716:


Algunas variables de entorno

PATH: Directorios donde buscar comandos

Quizás la variable de entorno más importante sea PATH, que contiene una lista de directorios separados por ; donde la shell buscará las órdenes que nosotros introduzcamos desde línea de comandos (si no los encuentra en el directorio actual).
Esta variable es tan importante que tiene su comando propio:

ford_gt1000 dijo:ATH [ [directorio[;...]] [;%PATH%];]

Muestra o fija una ruta de búsqueda para archivos ejecutables. Al incluir %PATH% en la nueva
ruta de acceso hará que la ruta de acceso anterior se anexe a la nueva configuración.

PATH ; borra la variable path
PATH sin parámetros muestra la ruta de acceso actual.:


Ejecutando el comando path obtenemos esa lista de directorios:

ford_gt1000 dijo::X:pruebas>path
PATH=C:WINNTsystem32;C:WINNT;C:WINNTSystem32Wbem;C:WINNTsys32;C:Archivo
s de programaJavajdk1.5.0_04bin;C:Archivos de programaArchivos comunesGTK
2.0bin:


Por ejemplo, si en el directorio "C:progbin" guardamos archivos ejecutables a los que deseamos llamar sin necesidad de escribir toda la ruta hasta ellos, podemos añadir ese directorio a la variable PATH:

ford_gt1000 dijo::C:>path %PATH%;C:progbin:


A partir de ahora podremos ejecutar cualquier programa que se encuentre en ese directorio sin tener que especificar la ruta completa.

Si deseamos cambiar la path para todas las shell que abramos, debemos recurrir a las variables de entorno en Windows. En este caso, también podremos ejecutar los programas desde Windows con botón Inicio > Ejecutar....

ERRORLEVEL
Almacena información sobre el resultado de la ejecución del último comando (0 si tuvo una respuesta exitosa, distinto de 0 en otro caso). - mas información-

PROMPT
Define el símbolo del sistema. -más información-

DIRCMD
Permite establecer parámetros por defecto para el comando DIR

p.ej. Si queremos que los listados de directorio aparezcan en minúsculas, y ordenados alfabéticamente:
Z:>SET DIRCMD=/L/ON

COMPSPEC
Ruta completa de la shell de comandos

ford_gt1000 dijo::Cocuments and SettingsAdministrador>set comspec
ComSpec=C:WINNTsystem32cmd.exe:


[ Variables de entorno en W2003 Server ]

ford_gt1000 dijo::Locales o de Usuario

%ALLUSERSPROFILE% ubicación de perfil Todos los usuarios.
%APPDATA% ubicación en que las aplicaciones guardan los datos de forma predeterminada.
%CD% directorio actual.
%CMDCMDLINE% línea de comandos exacta utilizada para iniciar el Cmd.exe actual.
%LOGONSERVER% nombre del controlador de dominio que validó la sesión actual.
%PROMPT% configuración del símbolo del sistema del intérprete actual.
%TEMP% y %TMP% directorios temporales predeterminados que utilizan las aplicaciones.
Algunas aplicaciones requieren TEMP y otras TMP.
%USERDOMAIN% nombre del dominio que contiene la cuenta de usuario.
%USERNAME% nombre del usuario que ha iniciado la sesión actual.
%USERPROFILE% ubicación del perfil del usuario actual.


Sistema

%CMDEXTVERSION% número de versión de Extensiones del procesador de comandos actual.
%COMPUTERNAME% nombre del equipo.
%COMSPEC% ruta de acceso al ejecutable del shell de comandos.
%DATE% fecha actual. Utiliza el mismo formato que el comando date /t.
%ERRORLEVEL% código de error del último comando utilizado. Usualmente, los valores distintos de
cero indican que se ha producido un error.
%HOMEDRIVE% letra de unidad de la estación de trabajo local del usuario conectada al directorio
particular del usuario. Se establece según el valor del directorio particular.
El directorio particular del usuario se especifica en Usuarios y grupos Locales.
%HOMEPATH% ruta de acceso completa del directorio particular del usuario. Se establece según
el valor del directorio particular. El directorio particular del usuario se
especifica en Usuarios y grupos Locales.
%HOMESHARE% Devuelve la ruta de acceso de red del directorio particular compartido del usuario.
Se establece según el valor del directorio particular. El directorio particular del
usuario se especifica en Usuarios y grupos Locales.
%NUMBER_OF_PROCESSORS% número de procesadores instalados en el equipo.
%OS% nombre del sistema operativo.
%PATH% ruta de acceso de búsqueda para los archivos ejecutables.
%PATHEXT% extensiones de archivo que el sistema operativo considera como ejecutables.
%PROCESSOR_ARCHITECTURE% Devuelve la arquitectura de chip del procesador. Valores: x86 o IA64 (basado en Itanium).
%PROCESSOR_IDENTFIER% Devuelve una descripción del procesador.
%PROCESSOR_LEVEL% Devuelve el número de modelo del procesador instalados en el equipo.
%PROCESSOR_REVISION% Devuelve el número de revisión del procesador.
%RANDOM% número decimal aleatorio entre 0 y 32767.
%SYSTEMDRIVE% unidad que contiene el directorio raíz del Sistema Operativo (es decir, la raíz del sistema).
%SYSTEMROOT% ubicación del directorio raíz del Sistema Operativo.
%TEMP% y %TMP% directorios temporales predeterminados que utilizan las aplicaciones.
Algunas aplicaciones requieren TEMP y otras TMP.
%TIME% hora actual. Utiliza el mismo formato que el comando time /t.
%WINDIR% Devuelve la ubicación del directorio del sistema operativo.:


o

C:> ECHO %date%
mar 04/02/2003
C:> CMD /E:off -- arrancamos una nueva shell con las extensiones de comando deshabilitadas
C:> ECHO %date%
%date%

Anuncios

0 comentarios - Variables de la shell en cmd