
Ayuda
3. Creación y Configuración de Scripts
4. Descripción de los comandos
4.5 Establecer los atributos de un archivo
5.1 Alias para las claves del registro en el comando preg
5.3 Espacios en blanco en los parámetros
iPDA es una aplicación que permite controlar una PDA desde una PC. Algunas de las funciones de iPDA son transferencia de archivos, acceso a archivos, ejecución remota de aplicaciones en una PDA desde una PC.
Estas funciones pueden configurarse a partir de scripts basados en un texto.
Es muy importante mantener el dispositivo conectado a la PC hasta que iPDA termine de correr los scripts.
Esta es la pantalla de iPDA para la interfaz del usuario principal.

En la parte superior de esta pantalla se encuentra la información acerca de su PDA. Aquí se muestra información acerca de la conexión entre la PC y su PDA, el sistema operativo de la PDA y la memoria disponible.
La información provista a la derecha pertenece al script que ejecutará iPDA.
En el centro de esta pantalla se encuentran los comandos que iPDA ejecutará, sus argumentos y su estado.
Para controlar iPDA es posible usar tanto los botones que se encuentran en la parte inferior de la pantalla como la barra de menú.
iPDA usa scripts basados en texto para realizar operaciones entre la PC y la PDA.
Estos scripts pueden crearse o modificarse con cualquier editor de texto y deben ser guardados como archivos *.ipda.
Esta es la fuente para el script cargado en la imagen anterior:
// Script Heading
version 1.0.2
description WireLess Deployer Client
platform WinCE 4.0.0
model PPT8800
vendor SYMBOL
// Commands
pput .\4.txt \4.txt
pmd \ipda_test
pput .\1.txt \1.txt
pput .\2.txt \2.txt
pdel \4.txt
pput .\3.txt \3.txt
prd \ipda_test
pget \1.txt .\get_1.txt
Esta es la primera parte de un script. No es imprescindible proveer esta información, pero resulta útil identificar el propósito de un script.
Esta información aparecerá en la parte superior izquierda de la pantalla principal de iPDA.
Sintaxis:
version <Versión del script. Esto no aparece en pantalla.>
description <Descripción del script>
platform <Sistema operativo para el cual fue hecho el script>
model <Modelo de PDA para el cual fue hecho el script>
vendor <Fabricante o vendedor>
Estos son argumentos opcionales que se pueden usar para configurar el comportamiento de iPDA. Deben estar entre el encabezamiento y la sección de comandos.
Sintaxis:
|
Argumento |
Descripción |
| noerror or no_error | Impide que iPDA detenga la ejecución del script si ocurre un error. |
| nonext or no_next | Inhabilita el botón "Siguiente". |
| setclock or set_clock | Coordina la hora y la zona horaria de la PDA con la hora y la zona horaria de la PC. |
| run_once | Ejecuta el script sólo una vez. |
| autostart | Empieza la ejecución automáticamente. |
| autoexit | Cierra la aplicación al finalizar la ejecución. |
Esta es la sección principal de cualquier script. En la
siguiente lista se encuentran las operaciones que iPDA puede realizar:
|
Comando |
Sintaxis |
Descripción |
| pput | pput [-a|-k] <source_path> <target_path> | Copia un archivo desde la PC a la PDA. |
| pdel | pdel [-i] <file_path> | Borra un archivo existente en la PDA. |
| prun | prun <file_path> | Ejecuta una aplicación válida en la PDA o, si lo soporta, un archivo batch. |
| pget | pget [-a|-k] <source_path> <target_path> | Copia un archivo desde la PDA a la PC. |
| pmd | pmd [-i] <dir_path> | Crea una nueva carpeta en la PDA. |
| prd | prd [-i |-f] <dir_path> | Borra una carpeta ya existente en la PDA. |
| preg | preg [-a] <registry_key> <target_path> | Exporta una clave de registro desde la PDA a un archivo en la PC. |
| pregmerge | pregmerge [-i] <source_path> | Importa las claves de registro desde un archivo almacenado en la PC hacia el registro de la PDA. |
| pdelreg | pdelreg [-i] <registry_key> | Remueve un clave de registro almacenada en la PDA. |
| pdelregval | pdelregval [-i] <registry_key> <registry_value> | Remueve un valor de una clave de registro almacenada en la PDA. |
| run | run <file_path> | Ejecuta una aplicación válida local o un archivo batch. |
| warmboot | warmboot | La PDA realiza un warm boot. |
| coldboot | coldboot | La PDA realiza un cold boot. |
| psetclock | psetclock | Coordina la hora y la zona horaria a la hora y zona horaria de la PC. |
| pmove | pmove [-o] <old_name> <new_name> | Renombra una carpeta o un archivo existente. |
| label | label <name> | Permite definir una etiqueta que puede usarse para hacer saltos condicionales. |
| condj | condj msg buttons [go-to:label | jump:n] | Permite hacer saltos condicionales dentro del script. |
| pappend | pappend <source_file> <target_file> | Agrega un archivo_fuente a archivo_destino, el archivo_destino es guardado en la PDA. |
| pamend | pamend -u|-a|-ua|-d [-i][-m][-c][-s] <source_file> <target_file> | Inserta, actualiza o borra partes de un archivo guardado en la PDA usando otro guardado en la PC. |
| preplace | preplace [-rline][-i][-m] target_file <target_substring> <new_string> | Encuentra líneas que contengan una determinada subcadena para modificarlas o reemplazarlas por otras. |
| pgetdir | pgetdir [-c |-i | -r | -o] <source_directory> <target_directory> | Copia una carpeta desde la PDA a la PC. |
| pputdir | pputdir [-c |-i | -r | -o] <source_directory> <target_directory> | Copia una carpeta desde la PC a la PDA. |
| psetattribute | psetattribute +r|-r|+h|-h <target_path> | Establece los atributos "sólo lectura" y "oculto" de los archivos ubicados en una carpeta. |
| pkillprocess | pkillprocess [-i] <target_process> | Finaliza una proceso que está corriendo en la PDA. |
| waitforconnection | waitforconnection | Detiene la ejecución del script hasta que la conexión con la PDA sea restablecida. |
| pause | pause seconds | Detiene la ejecución del script por una cantidad determinada de segundos. |
[-a]: modo anexar. iPDA anexará el archivo fuente o la información de registro al archivo de destino en lugar de reemplazarlo.
[-f]: fuerza la eliminación de un archivo. iPDA eliminará todos los archivos y subcarpetas de la carpeta que se va a eliminar.
[-i]: ignorar errores. iPDA ignorará errores tales como archivo no existente, directorio no existente o ya existente, línea no encontrada o etiquetas no encontradas.
[-k]: mantener un archivo existente. iPDA advertirá al usuario si un archivo que se está por escribir ya existe.
[-o]: rescribe el archivo de destino. Trabaja sólo con archivos. Al mover un archivo, iPDA rescribe el archivo de destino si ya existe.
Condj permite realizar saltos condicionales dentro del script, otorgándole al usuario la posibilidad de detener la ejecución del script, saltar partes hasta cierta línea o continuar normalmente con la ejecución, dependiendo de los botones de mensaje usados.
Se mostrará al usuario un cuadro de mensaje con el mensaje contenido en "msg". Este mensaje puede ser usado para advertir acerca de una acción crítica, por ejemplo: cold/warm boot. En los cuadros de mensaje pueden mostrarse hasta tres botones y su selección determina la próxima acción a ser ejecutada.
La distancia del salto condicional es determinada por la distancia hasta "label", si ésta ha sido definida, o por el tamaño de "n".
Sintaxis:
condj msg buttons [go-to:label|jump:n]
msg: cadena que será mostrada en el cuadro de mensaje.
buttons: los botones que aparecerán en el cuadro de mensaje pueden ser las siguientes constantes: MB_CONTINUE, MB_CONTINUESKIP, MB_CONTINUESTOP, MB_CONTINUESKIPSTOP.
CONTINUE: continúa la ejecución del script.
STOP: interrumpe la ejecución del script.
SKIP: salta hasta cualquier parte del script usando las opciones "go-to:label" o "jump:n". Si no se ha definido ninguna de estas dos, condj salta la próxima línea y continúa con la siguiente.
go-to:label : si se selecciona el botón "Saltear", condj salta hasta el comando ubicado en la línea siguiente a donde se encuentra la etiqueta.
jump:n : si se selecciona el botón "Saltear", condj salta hasta el comando que se encuentra a n líneas del actual. Si n excede el número de líneas de script, se aplican las siguientes reglas: si n < 0 y la siguiente línea a ejecutar es negativa, la ejecución del script continuará desde el principio; si n > 0 y la siguiente línea a ejecutar es mayor que la cantidad total de líneas del script, la ejecución será detenida.Ejemplos:
Uso básico
pput config.cfg \Application\config.cfg
condj "Se realizará un warm boot, desea saltearlo?" MB_CONTINUESKIP
warm boot
.
.
.Luego de que el archivo es escrito en la PDA, iPDA ejecutará el comando del condj y mostrará el siguiente cuadro de mensaje:
Si se selecciona "Saltear", iPDA salteará el comando del warm boot y ejecutará el comando siguiente. Haciendo clic sobre "Continuar" se realizará el warm boot.
Si no desea darle al usuario la oportunidad de saltear el comando del warm boot sino tan sólo advertirle, puede usar la combinación de botones MB_CONTINUE.
Uso avanzado
Si ocurre un error tal vez algunos de los pasos del script deban ser repetidos, o tal vez algunos no necesitan ser hechos porque fueron realizados previamente. En esos casos se hace obligatorio el uso avanzado de los saltos condicionales. El uso de las opciones "jump:n" y "go-to:label" es muy simple y será explicado en los siguientes ejemplos:
pput config.cfg \Application\config.cfg
condj "Los siguientes comandos configurarán la PDA, desea saltearlos o finalizar la ejecución (saltear el warm boot también)?"" MB_CONTINUESKIPSTOP go-to:end_configuration
.
.
.
label end_configuration
warm bootCuando se ejecuta el comando condj, aparece el siguiente cuadro de mensaje:
Si el usuario ni siquiera desea realizar el warm boot, debe elegir el botón "Parar". En cambio, seleccionando el botón "Saltear", salteará todos los comandos entre el comando de condj y la etiqueta, de manera que el próximo comando a ejecutarse será el warm boot.
En lugar de "go-to:label" se puede utilizar la opción "jump:n". La diferencia entre estas opciones es que en la segunda el salto debe ser medido de antemano, mientras que la primera es más amigable, dado que permite modificar el script fácilmente, sin necesidad de recalcular los saltos en cada modificación.
Los comandos siguientes son equivalentes solo cambia lo que se muestra al usuario:
MB_YES [YES] = MB_CONTINUE [Continue] MB_YESNO [YES] [NO] = MB_CONTINUESKIP [Continue] [Skip] MB_YESCANCEL [YES] [Cancel] = MB_CONTINUESTOP [Continue] [Stop] MB_YESNOCANCEL [YES] [NO] [Cancel] = MB_CONTINUESKIPSTOP [Continue] [Skip] [Stop]
Este comando es usado para insertar, actualizar o borrar partes de un archivo guardado en la PDA usando otro archivo guardado en la PC. Para buscar partes de un archivo, pamend usa la primera y la última línea no vacía del archivo de la PC (de ahora en adelante "etiquetas"). Dependiendo de la acción pasada como parámetro, pamend reemplazará el texto del archivo de la PDA por el texto del archivo de la PC (actualizar), borrará el texto de la PDA (borrar) o añadirá el texto de la PC al final del texto de la PDA (insertar).
Las opciones de comparación permiten que la búsqueda no haga distinción entre mayúsculas y minúsculas, no considere espacios en blanco, ignore errores o haga múltiples búsquedas.
Sintaxis:
pamend -u|-a|-ua|-d [-i][-m][-c][-s] source_file target_file
Operaciones:
Las etiquetas son buscadas en el archivo de la PDA y entonces se realiza alguna de las siguientes acciones:
Update (-u): si se encuentran las etiquetas, pamend reemplaza el texto de la PDA que está entre ellas por el texto del archivo de la PC; si no se las encuentra, el usuario recibirá una advertencia (salvo si está configurada la opción "-i").Add (-a): si se encuentran las etiquetas, el usuario recibirá una advertencia (salvo si está configurada la opción "-i"). Si las etiquetas no son encontradas, pamend añadirá el texto del archivo de la PC al final del texto del archivo de la PDA.
Update or Add (-ua): si se encuentran las etiquetas, se realizará una actualización. Si no se encuentran, se realizará una inserción.Delete (-d): si se encuentran las etiquetas en el archivo de la PDA, el texto que se encuentra entre ellas será eliminado. Si no se encuentran, pamend advertirá al usuario (salvo si está configurada la opción "-i").
Opciones:
-i: ignorar errores de búsqueda.
-m: pamend busca más de un par de etiquetas. Si encuentra más de un par y no se utiliza esta opción, el usuario recibirá una advertencia.
-s: la comparación será efectuada removiendo espacios de las cadenas.
-c: la comparación no hace distinción entre mayúsculas y minúsculas.Ejemplo:
Este ejemplo consiste en mostrar una actualización de un archivo guardado en la PDA. El archivo destino es commands.txt y el archivo fuente es update.txt:
\Application\commands.txt update.txt \START_PATTERNS
FILE NAMES PATTERNS:
******************************************
* <YYMMDD> year month day
* <DDMMYY> day month year
* <YYYYMMDD> year month day
* <DDMMYYYY> day month yyyy
******************************************
\END_PATTERNS
TIPS:
- how to execute a .bat file ?
run file.bat\ start_patterns FILE NAMES PATTERNS:
******************************************
* <YYMMDD> year month day
* <DDMMYY> day month year
* <YYYYMMDD> year month day
* <DDMMYYYY> day month yyyy
* <YYYY> year four digits
* <YY> year two last digits
* <MM> month
* <DD> day
* <HMS> hour minute second
* <HM> hour minute
* <H> hour
* <M> minute
* <S> second
******************************************
\END_PATTERNS
Ahora ejecutamos el siguiente script:
pamend -ua -c -s update.txt \Application\commands.txt
pamend buscará el texto en commands.txt lo actualizará usando update.txt. Dado que la comparación no hace distinción entre mayúsculas y minúsculas y no considera los espacios en blanco, las etiquetas son encontradas y el texto es reemplazado obteniendo como resultado:
\Application\commands.txt \ start_patterns FILE NAMES PATTERNS:
******************************************
* <YYMMDD> year month day
* <DDMMYY> day month year
* <YYYYMMDD> year month day
* <DDMMYYYY> day month yyyy
* <YYYY> year four digits
* <YY> year two last digist
* <MM> month
* <DD> day
* <HMS> hour minute second
* <HM> hour minute
* <H> hour
* <M> minute
* <S> second
******************************************
\END_PATTERNSTIPS:
- how to execute a .bat file ?
run file.bat
Este comando encuentra líneas que tengan una determinada subcadena a fin de modificarlas o reemplazarlas por otras.
Sintaxis:
preplace [-rline][-i][-m] target_file target_substring new_string
-rline: si se encuentra la línea, toda la línea será reemplazada por "new_string". Si no se usa este comando, preplace reemplazará únicamente "target_substring" por "new_string".
-i: ignorar errores de búsqueda.
-m: preplace buscará más de una línea. Si no se usa este comando, el usuario recibirá una advertencia.Ejemplo:
Este ejemplo muestra el uso de la opción -rline en un script:
preplace -rline config_rline.cfg "10.10.10.133" "IP=10.10.10.133"
preplace config.cfg "10.10.10.133" "192.168.3.44"
config_rline.cfg config.cfg [TERMINAL]
OffOnExtPwr=Yes
PwdWConf=234
PwdExit=307
IPAddr=10.10.10.133
CBMenuMainMenu=1
[DATA]
LocalIPAddr=10.10.10.133[TERMINAL]
OffOnExtPwr=Yes
PwdWConf=234
PwdExit=307
IPAddr=10.10.10.133
CBMenuMainMenu=1
[DATA]
LocalIPAddr=10.10.10.133
El contenido de cada línea es el mismo, pero después de la ejecución del script el resultado es diferente:
config_rline.cfg config.cfg [TERMINAL]
OffOnExtPwr=Yes
PwdWConf=234
PwdExit=307
IP=10.10.10.133
CBMenuMainMenu=1
[DATA]
IP=10.10.10.133[TERMINAL]
OffOnExtPwr=Yes
PwdWConf=234
PwdExit=307
IPAddr=192.168.3.44
CBMenuMainMenu=1
[DATA]
LocalIPAddr=192.168.3.44
Estos comandos permiten copiar carpetas desde la PC a la PDA y viceversa. Está permitido el uso de los comodines '*' y '?' para filtrar archivos y carpetas.
Sintaxis:
pgetdir [-c |-i | -r | -o] source_directory target_directory
pputdir [-c |-i | -r | -o] source_directory target_directoryOpciones:
-c: asegura que la carpeta de destino sea creada antes de empezar a copiar los archivos.
-i: si un archivo ya existe, continúa con el siguiente archivo o carpeta sin advertir al usuario.
-r: copia las carpetas y sus archivos de manera recursiva.
-o: rescribe cada archivo encontrado en la carpeta de destino.Observaciones:
Si se usan los comodines y la opción '-r', el filtro sólo se aplica la primera carpeta, de manera que las subcarpetas serán copiadas junto con todos sus archivos.Ejemplos:
Si se ejecuta el siguiente script:
pgetdir \test\*.exe \binBackup\
se obtiene el siguiente resultado:
\test\
\binBackup\ Doc\
notepad.exe
calc.exe
phones.txt
a1.bmp
flexrpvserver.exenotepad.exe
calc.exe
flexrpvserver.exe
Otro ejemplo:
pgetdir \test\temp?.txt \temp\
se obtiene el siguiente resultado:
\test\
\temp\
Doc\
temp1.txt
calc.exe
phones.txt
temp2.txt
flexrpvserver.exetemp1.txt
temp2.txt
El comando psetattribute permite cambiar los atributos "sólo lectura" y "oculto" de los archivos ubicados en una carpeta. Está permitido el uso de los comodines '*' y '?' para filtrar cierto tipo de archivos.
Sintaxis:
psetattribute +r|-r|+h|-h target_pathOpciones:
+r/-r: activa/desactiva el atributo "sólo lectura".
+h/-h: activa/desactiva el atributo "oculto".
Sintaxis: preg [-a] <registry_key> <target_path>
El parámetro registry_key debe estar
encerrado entre corchetes.
Abreviaturas para las principales
claves:
HKLM :
HKEY_LOCAL_MACHINE
HKCU :
HKEY_CURRENT_USER
HKCR :
HKEY_CLASSES_ROOT
HKU :
HKEY_USERS
Para exportar una clave y sus
subclaves use corchetes de la siguiente manera: [HKLM\Comm]
Para exportar únicamente los valores
de la clave, use los corchetes de la siguiente manera: [HKLM]\Comm
Los nombres de archivos a usar como argumentos para estos comandos pueden ser nombres absolutos o pueden ser creados usando patrones de fecha y hora.
Éstos son los patrones que soporta iPDA:
<YYMMDD> año mes día
<DDMMYY> día mes año
<YYYYMMDD> año (4 dígitos) mes día
<DDMMYYYY> día mes año (4 dígitos)
<YYYY> año (4 dígitos)
<YY> últimos dos dígitos del año
<MM> mes
<DD> día
<HMS> hora minuto segundo
<HM> hora minuto
<H> hora
<M> minuto
<S> segundo
Ejemplos:
Si ejecuta un script el 17 de marzo de 2006 a las 12:55 am éstos serán los resultados:
<YYMMDD>: 060317
<HM>: 1255
<DD>-<MM>-<YY>: 17-03-06
Si un parámetro
tiene espacios en blanco, es necesario encerrarlo entre comillas.
Ejemplo:
pput ".\file to copy.txt" "\copy file.txt"
preg "[HKLM\software\section name]" file.reg
En procedimientos de instalación se utilizan carpetas creadas por el sistema ej: \Windows, \Program Files. Como el nombre de estas carpetas cambia dependiendo del sistema operativo, iPDA provee una serie de alias (similares a la variables de entorno de Windows) para que los scripts puedan ser usados en cualquier PDA independientemente del idioma. Los alias disponibles son:
Alias
Dirección (Versión Inglés)
%PDA_DESKTOP% \Windows\Desktop %PDA_PROGRAMS% \Windows\Programs %PDA_PERSONAL% \My Documents %PDA_STARTUP% \Windows\StartUp %PDA_RECENT% \Windows\Recent %PDA_FONTS% \Windows\Fonts %PDA_FAVORITES% \Windows\Favorites %PDA_WINDOWS% \Windows %PDA_PROGRAM_FILES% \Program Files %PDA_START_MENU% \Windows\Start Menu