Cómo emitir comandos del sistema operativo

En esta sección:

Cómo:

Puede emitir un comando de sistema operativo para establecer un entorno en el que se deba ejecutar la solicitud. Por ejemplo, los programas pueden cambiar los directorios, modificar el nombre de los archivos, descomprimirlos, copiarlos y efectuar otras operaciones antes de ejecutar una solicitud. Después de personalizar el entorno, el programa puede comenzar las solicitudes de informes o gráficos.

Nota: En Developer Studio sólo se puede usar -DOS y -WINNT.


Principio de página

x
Sintaxis: Cómo Ejecutar un comando del sistema operativo
op_system command

donde:

op_system

Especifica el sistema operativo.

-DOS, oDOS, especifica el sistema operativo DOS.

-MVS, oMVS, especifica el sistema operativo MVS.

-TSO, oTSO, especifica el sistema operativo TSO.

-UNIX, oUNIX, especifica el sistema operativo UNIX.

-WINNT, oWINNT, especifica el sistema operativo WINNT.

-VMS, oVMS, especifica el sistema operativo VMS.

AS/400, o AS/400, especifica el sistema operativo IBM i, también conocido como AS400 y OS400.

-SYSTEM, o !, especifica cualquier sistema operativo.

command

Es un comando del sistema operativo.

Nota:


Principio de página

x
Comando de cambio de directorio del sistema operativo

Puede parecer que el comando de cambio de directorio, que es el comando cd en todas las plataformas excepto OpenVMS (comando SET DEFAULT), no funciona del modo esperado cuando una segunda solicitud emite un comando -UNIX pwd. Por ejemplo, cuando parece que se ignora la emisión de -UNIX cd /temp. Los comandos del sistema operativo operan como procesos independientes, así que cuando finalizan, las propiedades de entorno, como las variables, dejan de existir y se deshace cualquier cambio de directorio efectuado. Este comportamiento es consistente con el comportamiento no persistente de los entornos de servidor que protejen unas ejecuciones de otras.

Debido a este comportamiento, los comandos de cambio de directorio se suelen emplear como parte de una solicitud de ejecución de varios comandos de sistema operativo, en una sola línea. El comando cd se ejecuta primero y después se emite el comando deseado, para que los comandos se ejecuten en grupo. Puede que las aplicaciones incorporadas de versiones anteriores a 7.1.5 o de FOCUS hayan sido codificadas previamente en base a un comportamiento persistente y, ahora, deben ser codificadas para combinar en una sola línea el directorio de cambios y uno o varios comandos de sistema operativo.


Principio de página

x
Cómo ejecutar varios comandos de sistema operativo en una sola línea

La mayoría de los sistemas operativos permiten utilizar varios comandos en una sola línea, mediante separadores espaciales o sintaxis circundantes. Cada método varía en función del sistema operativo. A continuación le mostramos ejemplos en los que se emplea la sintaxis obligatoria para ejecutar (apilar) varios comandos de sistema operativo en una sola línea:

Para Windows:

! cmd /c "cd \tmp && chdir && if exist mydata.txt echo got it"
! cmd /c "cd \tmp & chdir & if exist mydata.txt echo got it "
! cd \tmp & chdir & if exist mydata.txt echo got it
! dir mydata & if exist mydata.txt echo got it

Para UNIX:

! cd /tmp ; pwd ; if [ -f mydata.txt ] ; then echo got it ; fi
! ls mydata.txt ; if [ -f mydata.txt ] ; then echo got it ; fi

Para OpenVMS:

! PIPE DIR /SIZE/DATE mydata.txt | SEARCH SYS$INPUT MYDATA 
! PIPE DELETE mydata.txt;* /Noconfirm > NL: 2> NL:

Para IBM i:

! cd /tmp ; pwd ; if [ -f mydata.txt ] ; then echo got it ; fi
! system "DSPLIB QGPL" ; if [ -f mydata.txt ] ; then echo got it ; fi
! ls mydata.txt ; if [ -f mydata.txt ] ; then echo got it ; fi

Nota: Los comandos nativos de IBM i se pueden apilar con los de QShell siempre que la porción nativa emplee el comando del sistema QShell con la porción nativa del comando, entre comillas dobles.


Principio de página

x
Cómo revisar la salida de comandos

Algunos comandos de sistema operativo realizan una función y no muestran salida adicional. Por ejemplo, los siguientes comandos no muestran ninguna salida al ejecutarse:

-UNIX cp a.fex b.fex
-DOS copy a.fex b.fex

Otros comandos devuelven salida al ejecutarse. Por ejemplo, los siguientes comandos muestran una lista de los archivos situados en el directorio actual, que termina por fex:

-UNIX ls -l grep fex
-DOS dir *.fex

WebFOCUS no muestra los resultados de los comandos de sistema operativo en el navegador. Para revisar los resultados de un comando de sistema operativo, debe cambiar la dirección de la salida a otro archivo.

Por ejemplo, los siguientes comandos cambian la dirección de la salida del comando a un archivo llamado OUTPUT (que puede revisarse más adelante en un editor):

-UNIX ls -l grep fex > /tmp/output
-DOS dir *.fex > c:\tmp\output

WebFOCUS