© 2004-2006 Manuel Collado
Script-1
Entornos de programación
Lenguajes de guiones (Scripting Languages)
© 2004-2006 Manuel Collado
Script-2
Grupos de lenguajes de programac. Lenguajes para programación de sistemas
System programming languages Rigurosos, seguros, eficientes Adecuados para programas complicados
Lenguajes de guiones (scripts) Scripting languages Flexibles, menos seguros, menos eficientes Adecuados para programas sencillos
© 2004-2006 Manuel Collado
Script-3
Ejemplos de leng. de programación Lenguajes para programación de sistemas
COBOL, FORTRAN, C/C++/C# Pascal, Modula-2, Oberon, Ada Java Lisp, Haskell, Smalltalk, Eiffel, ...
Lenguajes de guiones (scripts) Lenguajes de órdenes (command/shell languages) Rexx, Tcl, Perl, Pyton, Ruby VBScript, JavaScript
© 2004-2006 Manuel Collado
Script-4
Leng. de órdenes: características Asociados a algún Sistema Operativo Modos interactivo y no interactivo
Órdenes de usuario / automatización de operaciones Funciones
Ejecutar programas Usar/configurar dispositivos y servicios del S.O. Manipular ficheros y grupos de ficheros Elementos básicos de programación
Alternativas, bucles, variables, subprogramas, detección de errores, etc.
© 2004-2006 Manuel Collado
Script-5
Lenguajes de órdenes: Ejemplos MS-DOS, Windows
CMD.EXE - 32 bits (WinNT/2000/XP ) COMMAND.COM - 16 bit (MS-DOS, Win9x)
UNIX, Linux sh (Bourne, estándar) csh, tcsh (C, algo irregular) ksh (Korn, UNIX de ATT) bash (Bourne actualizado, Linux)
© 2004-2006 Manuel Collado
Script-6
Lenguaje de órdenes de WinNT Sintaxis general
orden argumentos... orden interna (DIR, COPY, ... - no devuelve error) orden externa (programa o script - devuelve error)
Comentarios REM texto del comentario :: texto del comentario
Etiquetas :nombre GOTO nombre
© 2004-2006 Manuel Collado
Script-7
Lenguaje de órdenes de WinNT Argumentos actuales
valor (sin blancos) /x (opción) "valor ...\" ..." (con blancos, " literal)
Órdenes compuestas orden ... & orden ... (secuencia) orden ... && orden ... (condicional, si éxito) orden ... || orden ... (condicional, si fallo) ( órdenes ... ) (orden compuesta) ^& ^| ( & o | literal )
© 2004-2006 Manuel Collado
Script-8
Lenguaje de órdenes de WinNT Escribir resultados
ECHO resultado ECHO. (línea en blanco)
Traza de ejecución ECHO ON/OFF (control de traza) @orden (suprime traza) ECHO (consulta estado de traza)
Terminar la ejecución EXIT [/B [nivelerror]]
© 2004-2006 Manuel Collado
Script-9
Lenguaje de órdenes de WinNT Ejecutar un programa o un fichero de texto con
órdenes (script) nombre argumentos...
ejecuta nombre.bat/cmd/exe/com lo busca en el directorio actual y en el PATH si es un script (.bat, .cmd), no retorna
CALL nombre argumentos... si es un script, sí retorna
CMD /C orden... Ejecuta un shell secundario y retorna
ERRORLEVEL (nivel de retorno)
© 2004-2006 Manuel Collado
Script-10
Lenguaje de órdenes de WinNT Argumentos o parámetros
nombre arg1 arg2 ... %1, %2, ... %9 SHIFT (%1%2 %3 %4...) %0 (nombre) %* (todos los argumentos)
Redirección de la E/S estándar nombre < entrada | otro-nombre > salida ... >> salida (añade nuevo texto) ... 2> salida (redirige salida de error) ... 2>&1 (combina error y salida normal)
© 2004-2006 Manuel Collado
Script-11
Lenguaje de órdenes de WinNT Entorno o contexto de ejecución
SET variable=valor (¡ojo!, sin dejar espacio) SET variable= (suprime la variable) %variable% (recupera el valor) SET prefijo (presenta una o varias variable) SET (presenta todas las variables) PATH lista-de-directorios (SET PATH=...) PATH (ECHO %PATH%) CD directorio (cambia directorio actual) x: (cambia unidad actual) CD (consulta directorio actual)
© 2004-2006 Manuel Collado
Script-12
Lenguaje de órdenes de WinNT Cambio de directorio, temporal
PUSHD directorio (cambia directorio actual) POPD (restaura anterior directorio actual) PUSHD/POPD puede anidarse
Entorno de ámbito limitado SETLOCAL (inicia ámbito local) SET/CD/PATH (cambios locales) fin del guión (termina el ámbito local) ENDLOCAL (termina el ámbito local) SETLOCAL/ENDLOCAL puede anidarse
© 2004-2006 Manuel Collado
Script-13
Lenguaje de órdenes de WinNT Estructuras de control: IF-THEN-ELSE
IF condición acción IF condición ( acción ) ELSE acción
Condiciones valor1 == valor2 (compara texto) valor1 compara valor2 (compara número o texto)
EQU, NEQ, LSS, LEQ, GTR, GEQ /I comparación (no distingue mayus./minus.) EXIST nombre (existe fichero o directorio) EXIST directorio\nul (existe directorio) ERRORLEVEL valor (error >= valor) NOT condición (negación)
© 2004-2006 Manuel Collado
Script-14
Lenguaje de órdenes de WinNT
Estructuras de control: IF-GOTOIF NOT condición GOTO no-condición... acción de sí-condición (then)GOTO fin-condición:no-condición... acción de no-condición (else):fin-condición
© 2004-2006 Manuel Collado
Script-15
Lenguaje de órdenes de WinNT
Estructuras de control: bucle WHILE:inicio-bucleIF NOT condición GOTO fin-bucle... acción del bucleGOTO inicio-bucle:fin-bucle
© 2004-2006 Manuel Collado
Script-16
Lenguaje de órdenes de WinNT Estructuras de control: bucles FOR
FOR %%x IN (lista) DO acción-con-%%x repite por cada valor de lista o archivos (lista=comodines)
FOR %%x IN (lista) DO CALL acción... evita salir del bucle si acción no retorna
FOR /D %%x IN (lista) DO ...FOR /R [raíz] %%x IN (lista) DO ...
repite para cada directorio (/D) o árbol de subdirector. (/R) FOR /L %%x IN (inicio, paso, fin) DO ...
bucle con contador
© 2004-2006 Manuel Collado
Script-17
Lenguaje de órdenes de WinNT Designar ficheros y grupos de ficheros
unidad:\directorio\...\nombre.ext por omisión, unidad o directorio actual . (directorio actual) .. (directorio padre) ?* (comodines)
Lista de ficheros o directorios DIR patrón DIR (equivale a DIR *) DIR /opciones... (/S /P /W /B /O ... etc.)
© 2004-2006 Manuel Collado
Script-18
Lenguaje de órdenes de WinNT Listar el contenido de un fichero (texto)
TYPE fichero(s) (admite patrones)
Cambiar el nombre/extensión REN fichero nuevo-nombre (admite patrones) nuevo patrón: nombre.*, *.ext
Eliminar ficheros DEL patrón (¡ojo!: * elimina todo)
© 2004-2006 Manuel Collado
Script-19
Lenguaje de órdenes de WinNT Copiar o mover ficheros
COPY origen destino (destino fich. o dir.) COPY origen (destino = .) MOVE origen destino (destino dir.) MOVE origen (destino = .)
Crear y eliminar directorios MKDIR directorio RMDIR directorio (debe estar vacío) se pueden abreviar: MD, RD
© 2004-2006 Manuel Collado
Script-20
Lenguaje de órdenes de WinNT Expansión de parámetros (referencia a ficheros)
%~ccp (cc: letras de código, p: parámetro) códigos: f: completo, d: unidad,
p: directorio, n: nombre, x: extensión a: atributos, t: fecha/hora, z: tamaño
Ejemplo: cd “c:\uno” %3=“dos\tres.txt” %~f3 c:\uno\dos\tres.txt %~d3 c: %~p3 \uno\dos\ %~n3 tres %~x3 .txt
© 2004-2006 Manuel Collado
Script-21
Lenguaje de órdenes de WinNT
Expansión de variables (sustitución de texto) %var:antes=después% Ejemplo:SET var=textoECHO %var% -- %var:x=X% texto -- teXto
© 2004-2006 Manuel Collado
Script-22
Lenguaje de órdenes de WinNT Cálculos aritméticos
SET /A variable = expresión Ejemplo:SET /A x = 11 + 22x 33SET /A x = x + 5x 38
Obtener ayuda sobre una orden orden /? help [orden]
© 2004-2006 Manuel Collado
Script-23
Lenguaje de órdenes de WinNT Ayuda para la interacción
CLS (borra la pantalla) COLOR bf (cambia los colores)
bf (hexadecimal: fondo/texto) PAUSE (espera pulsación de tecla) MORE [fichero] (inserta pausas en texto largo) CHOICE [/C:opciones] [mensaje] (lee opción
y fija ERRORLEVEL. Requiere instalar kit de recursos)