Buscar..


Introducción

Hay varias funciones y sentencias incorporadas para acceder al sistema operativo.

OS-COMMAND

Ejecuta un comando del sistema operativo.

OS-COMMAND sin ninguna opción iniciará un nuevo shell y no saldrá de él, por lo tanto, en el sistema operativo gráfico: es dejar una ventana "colgando".

DEFINE VARIABLE cmd AS CHARACTER   NO-UNDO.

cmd = "dir".

OS-COMMAND VALUE(cmd).

Hay tres opciones: SILENT , NO-WAIT y NO-CONSOLE .

SILENCIO

Después de procesar un comando del sistema operativo, el shell AVM se detiene. Para salir de la ventana en las plataformas GUI de Windows, debe escribir exit. Para salir de la ventana en las plataformas de caracteres de Windows, debe escribir salir y presionar RETORNO o BARRA ESPACIADORA. Puede utilizar la opción SILENT para eliminar esta pausa. Use esta opción solo si está seguro de que el programa, el comando o el archivo por lotes no generan ningún resultado en la pantalla. No se puede utilizar con NO-WAIT.

OS-COMMAND SILENT VALUE("runprogram.exe").

NO, ESPERA

En un entorno multitarea, el AVM pasa inmediatamente el control de nuevo a la siguiente declaración después del COMANDO OS, sin esperar a que termine el comando del sistema operativo. No se puede utilizar con SILENT. Esta opción solo es compatible con Windows.

OS-COMMAND NO-WAIT VALUE("DIR > dirfile.txt").

En Linux / Unix, tendrá que lograr esto precediendo el comando con un & -sign en su lugar:

OS-COMMAND VALUE("ls >> file.txt &").

NO CONSOLA

Mientras se procesa un comando del sistema operativo, el AVM crea una ventana de consola. La ventana de la consola no se puede limpiar después de ejecutar el comando. Puede usar la opción NO CONSOLA para evitar que esta ventana se cree en primer lugar.

OS-COMMAND NO-CONSOLE VALUE("startbach.bat").

OS-COMMAND nunca devuelve errores a Progress ABL, por lo que debe verificar los errores de otra manera, posiblemente escribiéndolos en un archivo en un shell-script o similar.

OPSYS

La OPSYS OPSYS devuelve en qué sistema operativo se está ejecutando el programa:

MESSAGE OPSYS VIEW-AS ALERT-BOX.

Resultado:

introduzca la descripción de la imagen aquí

Se puede usar para seleccionar a qué utilidad del sistema operativo llamar:

IF OPSYS = "LINUX" THEN 
    OS-COMMAND VALUE("ls -l").
ELSE 
    OS-COMMAND VALUE("dir").

ERROR OS

Devuelve un error de una llamada anterior a OS-* representada por un entero. Las llamadas que pueden devolver un SO-ERROR son:

  • OS APENDER
  • OS-COPY
  • OS-CREATE-DIR
  • OS-BORRAR
  • OS-RENAME
  • Guardar caché

Tenga en cuenta que OS-COMMAND encuentra. Necesita manejar los errores en OS-COMMAND usted mismo.

Numero erroneo Descripción
0 No hay error
1 No propietario
2 El fichero o directorio no existe
3 Llamada de sistema interrumpida
4 Error de E / S
5 Número de archivo incorrecto
6 No mas procesos
7 No hay suficiente memoria central
8 Permiso denegado
9 Mala dirección
10 El archivo existe
11 Hay tal dispositivo
12 No es un directorio
13 Es un directorio
14 Desbordamiento de tabla de archivos
15 Demasiados archivos abiertos
dieciséis Archivo demasiado grande
17 no queda espacio en el dispositivo
18 Directorio no vacio
999 Error no asignado (valor predeterminado de ABL)

Función OS-GETENV

Devuelve el valor de cualquier variable de entorno del sistema operativo.

MESSAGE OS-GETENV ("OS") VIEW-AS ALERT-BOX.

En una máquina de Windows:

introduzca la descripción de la imagen aquí

MESSAGE OS-GETENV ("SHELL") VIEW-AS ALERT-BOX.

Resultado en una máquina Linux con Bash como shell actual:

                        ┌────── Message ───────┐
                        │      /bin/bash       │
                        │ ──────────────────── │
                        │         <OK>         │
                        └──────────────────────┘

OS-COPY

Copiar un archivo

Copiar archivo de origen archivo de destino

Copie c:\temp\source-file.txt en c:\temp\target-file.txt . Es necesario comprobar OS-ERROR para el éxito o falta de ella.

OS-COPY VALUE("c:\temp\source-file.txt")  VALUE("c:\temp\target-file.txt").
IF OS-ERROR <> 0 THEN DO:
    MESSAGE "An error occured" VIEW-AS ALERT-BOX ERROR.
END.

OS-BORRAR

Elimina un archivo o un árbol de archivos.

Al igual que con muchas otras utilidades OS- *, debe verificar el estado en OS-ERROR .

OS-DELETE archivo-o-dir-to-delete [RECURSIVE]

Eliminar el árbol completo /tmp/dir :

OS-DELETE VALUE("/tmp/dir") RECURSIVE.

Borre el archivo llamado c:\dir\file.txt

OS-DELETE VALUE("c:\dir\file.txt").

OS-CREATE-DIR

Crea un directorio, el estado es en OS-ERROR

Directorio OS-CREATE-DIR

Cree un directorio llamado /usr/local/appData

OS-CREATE-DIR VALUE("/usr/local/appData").

OS APENDER

Adjuntar un archivo a otro. El estado se verifica en OS-ERROR

OS-APPEND origen objetivo

Anexa targetfile.txt con sourcefile.txt :

OS-APPEND VALUE("sourcefile.txt") VALUE("targetfile.txt").

OS-RENAME

Renombrar un archivo o directorio. El estado es en OS-ERROR . También se puede utilizar para mover archivos (o mover y renombrar).

OS-RENAME oldname newname

Cambie el nombre de /tmp/old-name a /tmp/new-name :

OS-RENAME VALUE("/tmp/old-name") VALUE("/tmp/new-name").

Mueva el archivo c:\temp\old.txt a c:\new-dir\old.txt :

OS-RENAME VALUE("c:\temp\old.txt") VALUE("c:\new-dir\old.txt").

OS-DRIVES (solo Windows)

Devuelve una lista de todas las unidades en un sistema.

MESSAGE OS-DRIVES VIEW-AS ALERT-BOX.

Resultado con cuatro unidades, de C a F:

introduzca la descripción de la imagen aquí

En Linux, la lista simplemente estará vacía, ya que las definiciones no tienen "unidades" conectadas. El listado de directorios se realiza de otra manera ( INPUT FROM OS-DIR )



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow