Поиск…


Вступление

Существует несколько встроенных функций и инструкций для доступа к операционной системе.

OS-КОМАНДА

Выполняет команду OS.

OS-COMMAND без каких-либо параметров запустит новую оболочку, а не выйдет из нее - таким образом вы будете на графической ОС: es оставить окно «висит».

DEFINE VARIABLE cmd AS CHARACTER   NO-UNDO.

cmd = "dir".

OS-COMMAND VALUE(cmd).

Существует три варианта: SILENT , NO-WAIT и NO-CONSOLE .

SILENT

После обработки команды операционной системы оболочка AVM приостанавливается. Чтобы выйти из окна на платформах графического интерфейса Windows, вы должны ввести exit. Чтобы выйти из окна на платформах символов Windows, вы должны ввести exit и нажать RETURN или ПРОБЕЛ. Вы можете использовать параметр SILENT для устранения этой паузы. Используйте этот параметр, только если вы уверены, что программа, команда или командный файл не генерируют никакого вывода на экран. Не может использоваться с NO-WAIT.

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

НЕТ, ПОДОЖДИТЕ

В многозадачной среде AVM немедленно передает управление обратно в следующий оператор после OS-COMMAND, не дожидаясь завершения команды операционной системы. Нельзя использовать с SILENT. Этот параметр поддерживается только в Windows.

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

В Linux / Unix вам нужно будет это сделать, следуя команде с помощью & -sign вместо:

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

НЕТ-КОНСОЛЬ

При обработке команды операционной системы AVM создает окно консоли. Окно консоли не может быть очищено после выполнения команды. Вы можете использовать опцию NO-CONSOLE, чтобы предотвратить создание этого окна в первую очередь.

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

Никакие ошибки не возвращаются из OS-COMMAND в Progress ABL, поэтому вам придется проверять наличие ошибок другим способом, возможно, записывая их в файл в shell-скрипте или аналогичном.

OPSYS

Функция OPSYS возвращает ту ОС, на которой запущена программа:

MESSAGE OPSYS VIEW-AS ALERT-BOX.

Результат:

введите описание изображения здесь

Его можно использовать для выбора того, какую утилиту для ОС вызывать:

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

OS-ОШИБКА

Возвращает ошибку из предыдущего вызова OS-* представленного целым числом. Вызовы, которые могут вернуть OS-ERROR:

  • OS-APPEND
  • OS-COPY
  • OS-CREATE-DIR
  • OS-DELETE
  • OS-ПЕРЕИМЕНОВАТЬ
  • SAVE CACHE

Обратите внимание, что OS-COMMAND отсутствует. Вам нужно обрабатывать ошибки в OS-COMMAND самостоятельно.

Номер ошибки Описание
0 Нет ошибок
1 Не владелец
2 Данный файл или каталог отсутствует
3 Прерванный системный вызов
4 Ошибка ввода-вывода
5 Плохой номер файла
6 Нет процессов
7 Недостаточно памяти ядра
8 Доступ запрещен
9 Плохой адрес
10 Файл существует
11 Нет такого устройства
12 Не каталог
13 Это каталог
14 Переполнение таблицы файлов
15 Слишком много открытых файлов
16 Файл слишком большой
17 Не осталось свободного места на устройстве
18 Каталог не пуст
999 Unmapped error (ABL default)

Функция OS-GETENV

Возвращает значение любой переменной среды ОС.

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

На компьютере с Windows:

введите описание изображения здесь

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

Результат на машине Linux с Bash в качестве текущей оболочки:

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

OS-COPY

Скопировать файл

Целевой файл источника исходного файла COPY

Скопируйте c:\temp\source-file.txt в c:\temp\target-file.txt . Вам нужно проверить OS-ERROR предмет успеха или его отсутствия.

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-DELETE

Удаляет файл или файл-дерево.

Как и во многих других утилитах OS- *, вы должны проверить статус в OS-ERROR .

OS-DELETE file-or-dir-to-delete [RECURSIVE]

Удалить все дерево /tmp/dir :

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

Удалите файл c:\dir\file.txt

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

OS-CREATE-DIR

Создает каталог, статус находится в OS-ERROR

Каталог ОС-CREATE-DIR

Создайте каталог под названием /usr/local/appData

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

OS-APPEND

Добавьте один файл в другой. Статус проверяется в OS-ERROR

Целевая задача источника ОС-APPEND

Дописывает targetfile.txt с sourcefile.txt :

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

OS-ПЕРЕИМЕНОВАТЬ

Переименуйте файл или каталог. Состояние находится в OS-ERROR . Может также использоваться для перемещения файлов (или перемещения и переименования).

OS-RENAME имя_файла newname

Переименовать /tmp/old-name в /tmp/new-name :

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

Переместите файл c:\temp\old.txt в c:\new-dir\old.txt :

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

OS-DRIVES (только для Windows)

Возвращает список всех дисков в системе.

MESSAGE OS-DRIVES VIEW-AS ALERT-BOX.

Результат с четырьмя дисками, C через F:

введите описание изображения здесь

В Linux список будет просто пустым, так как там по определению нет подключенных «дисков». Списки каталогов выполняются по-другому ( INPUT FROM OS-DIR )



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow