PDF de programación - Lenguaje de comandos - scripts .cmd .bat

Imágen de pdf Lenguaje de comandos - scripts .cmd .bat

Lenguaje de comandos - scripts .cmd .batgráfica de visualizaciones

Actualizado el 11 de Marzo del 2020 (Publicado el 1 de Abril del 2019)
7.277 visualizaciones desde el 1 de Abril del 2019
144,2 KB
25 paginas
Creado hace 14a (13/09/2009)
LENGUAJE DE COMANDOS – SCRIPTS .CMD .BAT
¿Qué es un script en lenguaje de comandos? No es nada más que un fichero de texto, que puede
generarse con el simple cuaderno de notas, y cuya extensión es .bat o .cmd. Su contenido son los
comandos que ejecutaríamos en una consola de comandos (cmd) y cuyo fin es evitar las tareas
repetitivas que podríamos realizar en una consola de comandos.
Aunque esta es la definición clásica, no debemos perder de vista que desde una consola de
comandos
podemos realizar, mediante comandos, prácticamente todo lo que la imaginación nos permita. Todo
lo que se configura, o las tareas de mantenimiento que realizamos en Windows se pueden hacer
desde una consola de comandos. Igualmente existen muchos comandos que son sólo de consola.
Revisemos un poco la tipología de los comandos: un comando es “algo” que o bien entiende
directamente el shell (el intérprete de comandos, en este caso el cmd.exe) o bien es un programa
con
extensión .com o .exe -o incluso un visual basic- que no use la interfaz gráfica y que por tanto esté
orientado a la consola. Un ejemplo clásico es el programa ipconfig. Este programa (de consola) nos
da la configuración TCP/IP de la máquina. O bien el programa ping.

ENTORNO DE UN PROGRAMA
Todos los sistemas operativos, y Windows no es una excepción, tienen un área de datos llamada
“entorno”. No es nada más que un área donde se guardan ciertas variables con su contenido.
Es importante entender que cada programa de Windows tiene su entorno (igual o diferente a otro
programa). Los entornos se heredan. Cada programa (y el propio intérprete de comandos, cmd.exe,
es un programa más) cuando se lanza, “hereda” dicho entorno. Por heredar, no quiere decir que
“use”
el mismo que el programa padre, sino que al lanzarse, el “loader” -cargador- del sistema operativo
realiza una copia del entorno padre en una nueva área de datos y al lanzar el programa le da como
dirección del área de entorno esa nueva copia del entorno del “padre”.
En otras palabras, cualquier modificación en las variables de entorno dentro de un programa no
afecta al sistema ni al resto de programas, ya que lo que haría es modificar su propio entorno: la
copia del entorno original del programa padre.
El sistema operativo al cargarse predefine ya una serie de variables de entorno. Podemos verlas,
bien
con botón derecho en Mi PC / propiedades / pestaña de opciones avanzadas / botón de variables de
entorno, o bien de una manera más simple, lanzando el intérprete de comandos (cmd.exe) y
tecleando el comando “set” (sin comillas).
NOTA: Realmente, aunque lo veamos en conjunto, existen dos entornos: uno del sistema y uno de
usuario, pero la visión de ambos es el conjunto de los dos.
Acabamos de ver nuestro primer comando: “set”. Este comando nos permite no sólo ver todas las
variables, sino también definir, cambiar, borrar su contenido y algunas opciones más.
Si lo ejecutamos por consola, nos dará algo similar a:
ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\mi usuario\Datos de programa
CommonProgramFiles=C:\Archivos de programa\Archivos comunes
COMPUTERNAME=MIMÁQUINA
ComSpec=C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\mi usuario
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;…..etc

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 7 Stepping 3, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0703
ProgramFiles=C:\Archivos de programa
…etc…
Fijémonos que la estructura es: nombre de variable=contenido de la variable
Las variables, dentro de una consola de comandos o bien dentro de un script se referencian para
poder ver su contenido encerradas entre símbolos de %. Por ejemplo, en el caso anterior, para ver el
contenido de la variable COMPUTERNAME, simplemente podemos ejecutar:
echo %COMPUTERNAME%
Esto nos dará como resultado:
MIMÁQUINA
Igualmente podríamos cambiarlo con el comando set citado anteriormente:
set COMPUTERNAME=nuevoNOMBRE
Pero…
* ¿Esto realmente tiene el efecto de cambiar el nombre del ordenador? por supuesto que no. Esto
sólo cambia el contenido de dicha variable. ¿Dónde lo cambia? pues tal y como hemos comentado
anteriormente, lo cambia en el entorno del programa, es decir, en la copia del entorno original
heredado por el programa. En nuestro caso, al ejecutarlo desde un cmd.exe, implica que cambia el
entorno del cmd.exe (y sólo de él, es decir, si tuviésemos lanzadas dos consolas de comandos, cada
una de ellas con cmd.exe, sólo se cambiaría en el cmd.exe que hayamos ejecutado ese comando
“set”). Y ¿para que puede servir? simple, si recordamos que un programa hereda una copia del
entorno del programa que lo lance, esto implicará que todo lo que lancemos desde esa consola de
comandos, tendrá el contenido de esa variable modificado.
* ¿Cómo podemos crear una nueva variable de entorno? tan simple como darle un nombre y
asignarle su contenido. Por ejemplo:
set nuevo=prueba
Esto creará si no existe, o modificará el contenido si existiese, de una variable de entorno llamada
“nuevo”, y le asignará el contenido de “prueba”.
* ¿Podemos asignar a una variable el contenido de otra?: sí, por supuesto. Simplemente recordando
que el contenido de una variable es precisamente el nombre de la variable encerrada entre símbolos
%.
set otra=%nuevo%
Esto creará la variable “otra” con el contenido de la variable “nuevo”, el cual era el texto “prueba”.
Si
después de ejecutar el comando anterior realizamos:
echo %otra%
su resultado será:
prueba
* ¿Cómo podemos borrar -eliminar- una variable? simplemente no asignando nada.
set otra=
En este caso borrará la variable. Si ahora damos el comando “set” que nos muestra todas las
variables, la variable “otra” ya no aparecerá.
* ¿Puedo concatenar textos con variables en una asignación?: Sí, por supuesto. Por ejemplo:
set otra_de_nuevo=Esto es una %nuevo% de concatenación
El resultado de lo anterior será que la variable “otra_de_nuevo” contendrá el valor “Esto es una
prueba de concatenación”.
* ¿Podemos tener contenidos numéricos y no sólo alfabéticos, y por tanto realizar operaciones
matemáticas con el comando set? sí, se puede. La manera es con el modificador /a. Pongamos un
ejemplo:

set n=234 (asignar 234 a la variable “n”)
set /a i=%n%/4
Veremos que esto nos devuelve por pantalla el valor 58 (es decir la división de 234/4) y además se
lo
asigna a la variable “i”.
Es necesario el modificador /a, ya que si no lo hubiésemos puesto, la expresión:
set i=%n%/4
no hubiese realizado la operación matemática y se hubiese quedado con el contenido (como literal)
de:
234/4
es decir, una cadena de caracteres con ese contenido y no con el resultado matemático de la
división.
Fijémonos, por curiosidad en este último caso y se puede ir realizando una prueba en una consola de
comandos.
Realicemos:
set n=234
set i=%n%/4
echo %i%
veremos entonces:
234/4
Si ahora realizamos:
set /a j=%i%
¿Que contendrá? ¿Contendrá el literal de texto “234/4″? ¿O sólo “234″ ya que el carácter “/” no es
numérico? ¿O contendrá “58″?

Realizadlo como prueba
La asignación a una variable numérica, puede ser decimal, hexadecimal u octal.
Podemos hacer:
set /a i=14
set /a i=0×0E
en ambos casos contendrá el decimal 14 (recordemos que el hexadecimal 0E equivale al decimal
14).
O bien, si queremos introducir un numero en octal, simplemente lo empezamos por cero.
set /a i=021
hay que tener cuidado con esto, ya que el octal 021 es el decimal 17. Podéis comprobarlo en
pantalla
simplemente tecleando la línea anterior y viendo el resultado. Siempre los resultados nos los
expresará en decimal.
Esto puede ser útil para convertir directamente de hexadecimal o bien de octal a decimal de una
manera rápida.
* Ya que hemos empezado con el comando “set” vamos a finalizar todo lo que dicho comando
puede
hacer. Además de lo anterior:
set p
nos mostrará en pantalla “todas” las variables de entorno que empiecen por p.
Y para finalizar el modificador /p. Es decir, una sintaxis del estilo:
set /p variable=[literal]
lo que hace es muestra el “literal” en pantalla y el cursor se queda a continuación esperando que
metamos un dato. Cuando lo metemos y tecleamos “intro”, lo que hayamos tecleado se asignará a la
variable de entorno definida en el set. Por ejemplo:
set /p dato=Introduce datos:
Nos mostrará por pantalla:

Introduce datos:_
y cuando introduzcamos los datos los asignará a la variable “dato”.
Esto es válido realizarlo en un script. En ese momento se detendrá la ejecución del script y nos
pedirá
datos por pantalla. Al pulsar la tecla “intro”, se los asignará a dicha variable y continuará la
ejecución
del script.
CARACTERES ESPECIALES
Hay ciertos caracteres “especiales” que hay que usar con extremada precaución: por ejemplo, evitar
usar, a no ser que lo necesitemos explícitamente, caracteres reservados como &, >, <, |, %, =, ^.
Pongamos un ejemplo. El carácter & (”and” en inglés, es decir “y” en castellano) se interpreta como
un “y”, por tanto, ejecuta lo que hay antes del & “y” además a continuación, ejecuta lo que hay
después del &. Es decir, si ejecutásemos:
set var=a&a
nos dará un error que veremos por pantalla:
“a” no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable
* ¿Qué ha hecho el sistema? Ha ejecutado el comando que hay antes del &, es decir:
set var=a
Por tanto le ha asignado a la variable de entorno “var” el contenido “a”. A continuación, el
intérprete
de comandos intenta ejecutar lo que hay después del &, es decir intenta interpretar el comando “a”.
Como “a” no es un comando reconocido, ni un .exe, ni un .com, ni el nombre de otro script nos dará
el error mostrado anteriormente. Curiosamente:
set var=a&cmd
¿qué hace? Ejecutadlo y ved el resultado.
Pero… ¿y si realmente queremos asignar el contenido del literal “a&a” a la variable “var”, cómo lo
hacemos? Simplemente antep
  • Links de descarga
http://lwp-l.com/pdf15629

Comentarios de: Lenguaje de comandos - scripts .cmd .bat (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad