Содержание · Работа · Меню · Диск · Параметры ввода-вывода Диалог ввода-вывода

### Скрипт обработки ввода-вывода

Скрипт может использоваться для журналирования ошибок ввода-вывода, а также для расширенной обработки ошибок (включая вызовы внеших программ). Функция доступна только в Professional Edition.

Скрипт можно загрузить или изменить через окно Параметров ввода-вывода (кнопка `Скрипт`).

Простой пример скрипта для журналирования ошибок ввода-вывода содержится в файле `deviolog.txt`.

Файл `ondevhsc.txt` содержит краткое описание доступных команд и некоторые примеры.

Допустимые строки команд имеют вид:
`IF УСЛОВИЕ КОМАНДА`
или
`КОМАНДА`
или
`:МЕТКА`
где УСЛОВИЕ задается равенством или неравенством
(`!=`, `>`, `<`, `>=`, `<=`, `=`) двух величин,
величинам могут быть целые числа (`0`, `1`, ...)
или переменные (список ниже)
или простые математические выражения (операторы `+`, `-`, `*`, `%`, `/`,
без скобок, математический порядок операций игнорируется),
например, `%ERROR%=0`
Комментарии предваряются двумя минусами (`--`)
-- Переменные (все отсчитываются от нуля):
-- %CONFIRM% - =1, если нажата кнопка `Подтвердить`, =0, если `Отменить`
(выводится окно диалога и ожидается выбор пользователя)
-- %DISKNUM% - номер диска в RAID-массиве
-- %TRYNUM% - номер попытки ввода-вывода
-- %LBA% - первый сектор в операции ввода-вывода
-- %SECNUM% - число секторов
-- %ERROR% - номер ошибки
-- %LINE% - текущий номер строки в скрипте
-- %SERVICE% - тип ввода-вывода:
-- 0-ATA 1-ATAPI 3-BIOSINT13OLD 4-BIOSINT13
-- 5-DOSINT25 6-DOSINT73 8-DOSMSCDEX 9-DOSFILE
-- 11-WINFILE 12-WINSCSI 14-WIN9XINT13 20-LINUXFILE
-- %LASTRES% - результат предыдущей команды
-- %LASTERR% - ошибка предыдущей команды
--
-- Команды:
-- SHOWDLG - принудительно показать окно диалога ввода-вывода
-- WAIT - ожидать выбор пользователя
-- DELAY N - ожидать N мсек.
-- EXECCMD CMDLINE - выполнить внешнюю команду CMDLINE используя командый процессор
(эквивалентно "cmd CMDLINE" в Windows)
-- EXECCMDQ CMDLINE - выполнить без создания нового консольного окна
-- EXEC "FILENAME" CMDLINE - вызвать внешнюю программу FILENAME с параметрамии CMDLINE
-- EXECQ "FILENAME" CMDLINE - вызвать без создания нового консольного окна
-- MSDOS - вызвать командный процессор (не поддерживается в Linux)
-- GOTO LABELNAME - перейти к метке LABELNAME в скрипте (к строке `:LABELNAME`)
-- RETURN - прервать выполнение скрипта, обработать ошибку согласно параметрам ввода-вывода
-- RETRETRY - прервать выполнение скрипта как при нажатии на кнопку `Retry`
-- RETIGNORE - прервать выполнение скрипта как при нажатии на кнопку `Ignore`
-- RETABORT - прервать выполнение скрипта как при нажатии на кнопку `Abort`
-- ADDLOG "FILENAME" LOGLINE - записать строку LOGLINE в файл FILENAME
(строка LOGLINE может содержать переменные)
-- CANCELIO - вызов `CancelIO` (только WinNT+)
(доступно, если устройство открыто с опцией `overlapped`)
-- OVLRESLT N - ожидать результат `Overlapped`-операции (N=1: ожидать; N=0: не ожидать) (только WinNT+)
(должно использоваться, если устройство открыто с опцией `overlapped`)
-- RESETHANDLE - заново открыть устройство (только WinNT+)
--
-- Спецификаторы формата:
-- Для форматирования числа после имени переменной через двоеточие
-- может быть добавлен специфиактор by, например,
-- %LBA:8x% - ширина: 8, шестнадцатиричный вывод
-- Пример скрипта:
IF %ERROR%=0 RETURN -- выйти, если нет ошибки
IF %ERROR%=128 GOTO LABEL1
IF %ERROR%=5 GOTO LABEL1
RETURN
:LABEL1
IF %CONFIRM%=0 RETRETRY -- повтор, если нажата кнопка Отмена
-- продолжить выполнение скрипта, если нажата кнопка Подтвердить
EXECCMD /K ECHO error %ERROR% at LBA: %LBA% (%SECNUM%) try: %TRYNUM%. Type EXIT to return.
IF %TRYNUM%<2 RETRETRY
DELAY 500
ADDLOG "C:\ERRORS.LOG" error %ERROR:x% at LBA: %LBA:10% (%SECNUM%) try: %TRYNUM%
RETIGNORE