Windows Unattended Edition
 Contenidos
Batch Scripting
Submitted by Alanoll - Traducido al castellano por Jaconbue

Antes de empezar haciendo archivos de proceso por lotes para instalar nuestras aplicaciones y modificaciones a la configuración, haremos una breve introducción a las posibilidades que tienen y cómo se usan.

Un fichero de proceso por lotes o (batch) es un fichero ASCII de extensión CMD o BAT (aunque es recomendable la 1ª). Se trata de una lista de comandos que pueden ser ejecutados secuencialmente en varias fases del proceso de instalación de Windows XP.

Utilizar este tipo de ficheros permite automatizar una lista de tareas de manera que quedan agrupadas en un único comando. La interacción con el usuario puede conseguirse de ciertas maneras, pero aquí lo que perseguimos es una completa autonomía de manera que el usuario no intervenga en ningún momento.

Estos ficheros pueden ejecutarse desde cmdlines.txt, svcpack.inf, RunOnceEx (en el registro), o GuiRunOnce (en winnt.sif). En esta guía se indicará cómo podemos ejecutar nuestros ficheros CMD de cualquiera de esas maneras.

» Contenido de un fichero CMD

Un fichero de proceso por lotes puede contener cualquier comando que pueda usarse en consola del sistema. La consola del sistema es muy similar al DOS de los ordenadores antiguos. Podemos acceder a ella en Inicio -> Ejecutar... -> CMD

Para crear y editar estos ficheros utilizaremos siempre el Bloc de Notas o cualquier otro editor ASCII. Si en el Bloc de notas escribimos caracteres especiales (como á, é, ñ, ó, ü, ...) no se mostrarán adecuadamente en la consola. Para ello es recomendable utilizar el editor ASCII de la consola. Para cargar este editor, abriremos una consola del sistema (Inicio -> Ejecutar... -> CMD) y ejecutaremos EDIT.


Se abre entonces un programa de consola en el que podemos crear nuestros ficheros CMD:


Podemos guardar este fichero en la ruta que queramos y ejecutarlo para ver el resultado.

A continuación se listan algunos comandos útiles muy usados en los ficheros CMD.

@echo off Oculta el prompt C:\> y todos los comandos del fichero
echo. Inserta una línea en blanco en la salida gráfica.
echo Hola Muestra "Hola" en la salida gráfica.
title Cambia el título de la ventana de la salida gráfica.
start Inicia un programa o aplicación.
pause Muestra "Pulse una tecla para continuar..." y detiene la ejecución hasta que el usuario pulse una tecla.
exit Cierra la ventana de la salida gráfica
sleep # Detiene la ejecución de los comandos durante # segundos. Requiere descargar el programa sleep.exe de la página de descargas.
cmdow @ /hid Oculta toda la salida gráfica del fichero. Muy útil si no queremos que el usuario vea los pasos que se están realizando y pueda interrumpir el proceso. Requiere descargar cmdow.exe de la página de descargas. Este fichero puede ser detectado erróneamente como un virus. Ignore cualquier advertencia en este sentido, pero tenga en cuenta que si incluye un antivirus en su Windows Desatendido puede que algunos scripts dejen de funcionar o que el usuario vea alguna advertencia.  Una opción es usar otro programa similar a éste.

Usualmente, la manera de instalar software desde nuestro CD de Windows Desatendido será incluir líneas de comandos similares a lo siguiente:

:_setup
rem Esto instala el programa silenciosamente
Start "ID" /wait %systemdrive%\install\id_prog\setup.exe /switch1 /switch2

:_reg
rem Esto añade las entradas del registro necesarias para configurarlo
rem Por ejemplo: número de serie, idioma
regedit /s %systemdrive%\install\id_prog\conf.reg

El comando start inicia el programa de instalación de la aplicación correspondiente, setup.exe. El parámetro /wait indica al comando start que debe esperar hasta que setup.exe termine antes de seguir ejecutándose la siguiente línea de comando del fichero CMD. Es muy importante utilizar /wait para que el resto del script no se ejecute simultáneamente, pues se crearían conflictos al estar instalándose varias aplicaciones en paralelo.

El parámetro /wait tiene algunas limitaciones. Start sólo esperará la finalización del programa que ha lanzado, y no a los subprogramas que éste lance. Por lo tanto, /wait no funciona si el programa que se ha lanzado inicia otros subprogramas y termina inmediatamente, mientras los subprogramas siguen ejecutándose. Para evitar este problema, tendremos que recurrir al comando sleep, que pausa el script durante el tiempo especificado, permitiendo que los subprogramas finalicen correctamente.

Con la opción Title = "ID" le indicamos a Start que la ventana de consola que abra debe tener ese nombre como título de la ventana. Es muy recomendable utilizar la opción Title siempre, incluso cuando se lancen aplicaciones de Windows que no requieran de ventana de consola. La omisión de este parámetro Title puede hacer que los parámetros aplicados al programa de instalación (/switch1 /switch2) no se interpreten correctamente.

El comando regedit añade al registro del sistema la información contenida en el archivo conf.reg. El parámetro /s sirve para que no se pida confirmación al usuario durante el proceso. En el archivo conf.reg podemos escribir el número de serie del programa, o alguna configuración del mismo, como por ejemplo, el idioma.

Hasta aquí se han presentado sólo algunas de las acciones que se pueden llevar a cabo con los ficheros CMD. Pueden sofisticarse mucho si se utilizan estructuras anidadas tipo if ... then , bucles tipo for , se pueden definir variables temporales o de sistema, y un largo etcétera. Para más información, busque algún manual de MSDOS en internet.

» Cómo hacer que se ejecuten durante la instalación de Windows

Los ficheros CMD pueden ejecutarse desde:
  • cmdlines.txt (ejecutados en la fase T-13)
  • svcpack.inf (ejecutados en la fase T-12)
  • RunOnceEx (ejecutados en el primer inicio de sesión)
  • GuiRunOnce (ejecutados en el primer inicio de sesión)
CmdLines.txt es muy útil para ejecutar tareas como Añadir usuarios, mediante el comando net user, así como para importar la configuración del registro HOTKEY_CURRENT_USER y aplicarla al usuario por defecto (Default profile). Para más información sobre cmdlines.txt, lea esto.

SvcPack.inf es el método que hemos usado para aplicar las actualizaciones de seguridad de Windows, en la sección de principiante. Para ejecutar un fichero CMD en la fase T-12 simplemente considérelo una actualización más a añadir al final de la lista.

Para que sus ficheros CMD se ejecuten en el primer inicio de sesión, inserte una línea en WinNT.SIF por cada fichero indicando la ruta del mismo. Para más información, vea la siguiente información.


» Dónde colocar los archivos CMD

Si utilizamos el método [GuiRunOnce], podemos situarlos en cualquier carpeta dentro del directorio $OEM$. Por ejemplo, si situamos el archivo batch.cmd en la carpeta C:\XPCD\$OEM$\$1\install, para que este archivo se ejecute tendremos que escribir lo siguiente en la sección [GuiRunOnce] del archivo winnt.sif:

[GuiRunOnce]
%systemdrive%\install\batch.cmd

Como el fichero batch.cmd está situado en una carpeta $OEM$, será copiado al disco duro durante la instalación, y se ejecutará desde allí. Para más información sobre el funcionamiento de las carpetas $OEM$, lea esta página.

Si utilizamos cmdlines.txt, podemos situarlo en cualquier carpeta dentro del directorio $OEM$. El programa de instalación de Windows buscará el archivo cmdlines.txt hasta encontrarlo. Todos los ficheros de comandos por lotes lanzados por cmdlines.txt deben estar en su mismo directorio.

Si utilizamos svcpack.inf, debemos comprobar que este archivo está situado en C:\XPCD\I386 (y que el archivo svcpack.in_ está borrado). Los ficheros de proceso por lotes que sean lanzados por svcpack.inf deberían situarse en la carpeta C:\XPCD\I386\svcpack\, aunque también puede indicarse otra ruta. Para más información lea la página que explica el funcionamiento de SVCPACK.INF.


» Próximo paso

Lo siguiente que haremos es incluir controladores y aplicaciones en nuestro CD, aplicando los conocimientos aprendidos en esta página.




Copyright © 2001 - 2006
Comentarios, dudas, sugerencias...
Hecho con Nvu Get Firefox

HTML 4.01 Transitional Válido

CSS Válido