Дополнительные утилиты CRW-DAQ



Общее описание утилит

Первым делом, несколько примеров:
  @run help\ntcmds.chm       -- Вызвать справку по CMD.EXE
  @run replacestr.htm        -- Вызвать справку по утилите replacestr.exe
  @run dimtree.exe           -- Вызвать браузер для обзора сервисов DIM
  @run dns                   -- Вызвать сервер имен DIM
  @run -term:a wo.bat x*.exe -- Вызвать в терминальном окне команду поиска всех файлов x*.exe
  
В состав пакета CRW-DAQ входит библиотека утилит, включающая большое число маленьких программ (по большей части консольных), свободно распространяемых на условиях лицензий freeware, GPL, public и т.д. Многие из этих утилит распространяются вместе с исходными кодами. Большинство из них являются узко специализированными консольными программами, которые для решения определенных задач можно вызывать командой @run из главной консоли CRW-DAQ или запустить с помощью функции task_run из программ DaqPascal.

Подробности по каждой утилите (программе) можно узнать, вызвав их с ключем /? или -h, или прочитав сопроводительный .HTM, .CHM или .TXT файл. Например, если вы хотите получить справку по программе cpau.exe, то можно набрать команду @run cpau.htm.

Поскольку утилит много и набор их будет расширяться, предприняты меры для облегчения использования утилит, заключающиеся в первую очередь в функциях поиска. Во-первых, наиболее значимые утилиты внесены в секцию [@run] основного конфигурационного файла и могут быть найдены через нее. Однако это не очень удобно и к тому же мало пригодно для использования в дочерних процессах, запускаемых из-под CRW-DAQ. Поэтому все каталоги утилит вносятся в переменные окружения CRW_DAQ_SYS_PATH, CRW_DAQ_CONFIG_PATH и используются в функциях поиска, как описано ниже.

В список переменных окружения при запуске пакета, а также при запуске конфигурации DAQ-системы добавлены, кроме прочих, такие полезные переменные:

  1. CRW_DAQ_SYS_PATH - содержит большой список каталогов, содержащих консольные утилиты (смотри подробности ниже). Этот список составляется при запуске пакета из путей всех утилит, прописанных в секции [@run] основного конфигурационного файла.
  2. CRW_DAQ_CONFIG_PATH - содержит список каталогов, создаваемый при загрузке конфигурации DAQ-системы и включающий путь основного конфигурационного файла, а также путей из списка SearchPath, заданных в секции [DAQ]. Следует учитывать, что при завершении конфигурации переменная CRW_DAQ_CONFIG_PATH очищается.
  3. UnixRoot - содержит корневой каталог, где расположены команды unix.

Использование утилит

Утилиты из библиотеки можно использовать несколькими путями:
  1. Через команду @run.
    Переменные окружения CRW_DAQ_CONFIG_PATH, CRW_DAQ_SYS_PATH, Path используются для поиска программ при выполнении команды @run, если для исполняемого файла не указан полный путь, поэтому можно выполнять программы через короткие команды, например:
            --Создание общего каталога командой rmtshare.exe:
            @run rmtshare.exe \\.\postbox=c:\Postbox /REMARK "Почтовый ящик" /GRANT Все:"FULL CONTROL"
            --Вызов утилиты DIMTree.exe:
            @run dimtree
           
    Команда @run находит требуемый исполняемый файл, используя указанные выше переменные окружения. Команда @run описана подробнее ниже.

  2. Через функцию ParamStr('FileSearch file path').
    Например:
            s:=ParamStr('FileSearch rmtshare.exe');                  // Поиск в Path,CRW_DAQ_SYS_PATH,CRW_DAQ_CONFIG_PATH
            s:=ParamStr('FileSearch rmtshare.exe CRW_DAQ_SYS_PATH'); // Поиск только в пути CRW_DAQ_SYS_PATH
           
    Найденный файл затем запускается функциями типа task_run.

  3. Через использование в дочерних процессах, запускаемых из-под CRW_DAQ. Например, для поиска программы arj.exe в дочернем командном файле можно использовать такие конструкции:
            set arj=
            rem -- Поиск утилиты arj.exe в CRW_DAQ_CONFIG_PATH
            if "%arj%" == "" (for %%i in (arj.exe) do ( set arj=%%~CRW_DAQ_CONFIG_PATH:i))
            rem -- Поиск утилиты arj.exe в CRW_DAQ_SYS_PATH, если не найдена
            if "%arj%" == "" (for %%i in (arj.exe) do ( set arj=%%~CRW_DAQ_SYS_PATH:i))
            rem -- Поиск утилиты arj.exe в Path, если не найдена
            if "%arj%" == "" (for %%i in (arj.exe) do ( set arj=%%~Path:i))
            rem -- Выполнение найденной команды
            if "%arj%" == "" (echo ARJ.EXE не найдена) else (%arj%)
            
            Другой вариант:
            rem -- Включение списков каталогов в путь поиска
            set path=%CRW_DAQ_CONFIG_PATH%;%CRW_DAQ_SYS_PATH%;%path%;
            rem -- Выполнение команды
            arj.exe
           

Следует учесть, что в секцию [DAQ] добавлен список путей поиска SearchPath, например:

   [DAQ]
   SearchPath = ..\Help
   SearchPath = ..\Utility
  
Эти пути добавляются в переменную окружения CRW_DAQ_CONFIG_PATH, что делает файлы в этих каталогах доступными для команды @run и функции ParamStr('FileSearch ...'). Добавление каталога dir в список поиска SearchPath эквивалентно вызову функции ParamStr('AddSearchPath CRW_DAQ_CONFIG_PATH dir'). Следует учитывать, что при завершении конфигурации переменная CRW_DAQ_CONFIG_PATH очищается.

Следует учитывать следующее поведение консольной команды @run.

  1. Начальным каталогом запуска программ по умолчанию является домашний каталог Crw32.exe.
  2. Опция @run -cd dir cmd позволяет изменять каталог dir запуска программы cmd.
  3. Если не указано полное имя исполняемого файла, происходит поиск исполняемого файла в каталогах, указанных в переменных окружения Path, CRW_DAQ_SYS_PATH, CRW_DAQ_CONFIG_PATH. То есть фактически все включенные в пакет утилиты можно вызывать по короткому имени, без указания пути.
  4. Опция @run -path path cmd позволяет изменять список переменных окружения path, в которых заданы списки путей поиска программы cmd. Элементы списка надо разделять плюсом. По умолчанию используется список CRW_DAQ_CONFIG_PATH+CRW_DAQ_SYS_PATH+Path.
  5. Если не указано расширение имени файла, оно ищется в соответствии со списком расширений, указанных в переменной окружения PathExt. Обычно это что-то вроде .COM;.EXE;.BAT;.CMD;...
  6. Опция @run -Idle cmd позволяет установить приоритет Idle запуска программы cmd.
  7. Опция @run -Lower cmd позволяет установить приоритет Lower запуска программы cmd.
  8. Опция @run -Normal cmd позволяет установить приоритет Normal запуска программы cmd.
  9. Опция @run -High cmd позволяет установить приоритет High запуска программы cmd.
  10. Опция @run -RealTime cmd позволяет установить приоритет RealTime запуска программы cmd.
  11. Опция @run -Hide cmd позволяет установить скрытый (без окна) режим запуска программы cmd.
  12. Опция @run -Term:opt cmd позволяет выполнять запуск программы cmd в режиме терминала с опциями opt, такими же как в команде @term. В этом режиме стандартные потоки ввода-вывода программы переназначаются в каналы и перенаправляются в консольное окно CRW-DAQ. Обычно бывают нужны опции a (преобразование кодировок) и c (автоматическое закрытие окна консоли после завершения программы).

Примеры:

   @run c:\root\bin\root.exe   --Запуск программы root.exe с полным путем
   @run root.exe               --Запуск с поиском в Path,CRW_DAQ_SYS_PATH,CRW_DAQ_CONFIG_PATH
   @run -Path Path root.exe    --Запуск с поиском в Path
   @run root                   --Запуск программы с поиском в путях и расширениях
   @run -cd c:\temp root       --Запуск программы с указанием начального каталога
   @run -Term:a cmd /c dir c:\ --Запуск команды DIR C:\ к теминальном окне
  

При запуске утилит из DaqPascal надо использовать возможности функции ParamStr для поиска утилит по короткому имени.

  1. ParamStr('FileSearch file path') - поиск файла file в каталогах, заданных списком path разделенных плюсом переменных окружения, каждая из которых содержит список каталогов, разделенных точкой с запятой. Имя файла должно быть коротким (без полного пути). Если расширение файла не указано, то используются расширения из списка, заданного в переменной окружения PathExt, в котором обычно содержится что-то вроде PathExt=.COM;.EXE;.BAT;.CMD;. Если список path не указан, то используется список по умолчанию, что эквивалентно указанию path=CRW_DAQ_CONFIG_PATH+CRW_DAQ_SYS_PATH+Path.
  2. ParamStr('AddSearchPath path dir') - добавление каталога dir в список путей, содержащихся в переменной окружения path.
    Например, вместо указания списка
    SearchPath = c:\MyDirectory
    в секции [DAQ] можно напрямую добавить нужный путь в программе вызовом типа
    ParamStr('AddSearchPath CRW_DAQ_CONFIG_PATH c:\MyDirectory').
  3. ParamStr('RemSearchPath path dir') - удаление каталога dir из списка путей, содержащихся в переменной окружения path.
Лучше всего объяснить на примерах:
   s:=ParamStr('FileSearch root.exe');                        --Поиск root.exe в CRW_DAQ_CONFIG_PATH,CRW_DAQ_SYS_PATH,Path
   s:=ParamStr('FileSearch root.exe Path');                   --Поиск root.exe в Path
   s:=ParamStr('FileSearch root.exe CRW_DAQ_SYS_PATH+Path');  --Поиск root.exe в CRW_DAQ_SYS_PATH,Path
   s:=ParamStr('AddSearchPath CRW_DAQ_CONFIG_PATH ..\Temp');  --Добавление каталога в список путей поиска
   s:=ParamStr('RemSearchPath CRW_DAQ_CONFIG_PATH ..\Temp');  --Удаление  каталога из списка путей поиска
  

Список утилит

Ниже перечислено некоторое число наиболее полезных программ из библиотеки утилит.

AdmiRun.exe
AdmiLink.exe
InstallAdmiLink.exe
Утилита AdmiLink позволяет создавать ярлыки для запуска программ с правами Администратора из-под ограниченного пользователя без ввода пароля.
InstallWinKeyLock.exe Утилита WinKeyLock для блокировки клавиатуры и мыши.
dns.exe
did.exe
dimtree.exe
dimbridge.exe
dim_send_command.exe
Компоненты пакета DIM.
arj.exe
gzip.exe
Популярные консольные файловые архиваторы.
rmtshare.exe Консольная утилита для создания общедоступных сетевых ресурсов (каталогов и принтеров), позволяет также задавать и изменять права доступа разным пользователям к ресурсам. Примеры:
      rmtshare.exe \\crwbox\postbox=c:\postbox /REMARK "Почтовый ящик" /GRANT Все:Read
      rmtshare.exe \\crwbox\postbox /GRANT "Опытные пользователи":Change /GRANT Администраторы:"FULL CONTROL"
     
md5.exe
fsum.exe
calcmd5.exe
Консольные утилиты для вычисления и проверки контрольных сумм файлов (MD5 и других). Примеры:
     md5.exe *.*
     fsum -md5 *.* >digest.md5
     calcmd5.exe *.* > checksum.md5
     
cdimage.exe
mkisofs.exe
cdrecord.exe
Консольные утилиты для создания и записи ISO образов CD\DVD дисков. Примеры:
     cdimage.exe -lDemoCD -m -h -x -j1 -oci c:\SourceDir c:\DemoCD.iso
     
rusconv.exe Консольная утилита для конверсии текстовых файлов из одной кодировки в другую. Пример:
     rusconv.exe -alt +win -close -o file.cfg  - преобразовать file.cfg из кодировки DOS в WIN
     
nconvert.exe Консольная утилита для конверсии файлов изображений из одного формата в другой. Поддерживает более 40 форматов, изменение размера и цветовой палитры, вращение и отражение, групповые операции с файлами и т.д. В рамках пакета может применяться для формирования изображений для &WebSrv сервера, сжатия изображений для посылки почтой через &EmlSrv и т.д. Пример:
     nconvert.exe -out gif demo.bmp  - преобразовать BMP в GIF
     
chown.exe Изменяет владельца файлов. Примеры:
      chown.exe -r -d MyDomain Administrator *.*
     
close.exe Закрывает окно с заданным именем (заголовком). Примеры:
      close.exe "Main Tools"
     
grun.exe
Запускает программы с различными режимами окна, с ожиданием завершения или без него. Примеры:
      grun -hw cmd /c dir > dir.txt   --Hidden execute command, wait
      grun -h  cmd /c dir > dir.txt   --Hidden execute command, no wait
     
initlo.exe
logoff.exe
exitwin
Завершение работы системы. Примеры:
      logoff.exe                 -- Logoff
      initlo.exe -g 60 -p c:\logoff.bat -t "Logoff in 60 sec after logoff.bat execution."
      exitwin.exe -r             -- Reboot
      exitwin.exe -s             -- Shutdown
      exitwin.exe -l             -- Logoff
     
junc.exe
hardlink.exe
Создание жестких ссылок (Hard Link). Это когда у файла или каталога становится несколько эквивалентных имен. Например, файлы могут реально (физически) располагаться в каталоге d:\root, а для работы с ним можно использовать виртуальный каталог c:\root. Это полезно, например, если истемный диск переполняется - можно переместить файлы на другой диск и сделать на них жесткую ссылку. А иногда надо, чтобы физически файлы располагались на каком-то надежном хранилище (резервируемый диск), а работать с ними надо в каталоге на обычном диске. В этом случае повреждение обычного диска не приведет к порче информации, которая реально находится на другом диске. Примеры:
      junc.exe c:\root d:\root    -- Create c:\root as hard link of physical directory d:\root
      hardlink c:\root d:\root    -- Create c:\root as hard link of physical directory d:\root
     
pushkeys.exe Симуляция клавиатуры, то есть посылка символов заданному окну, как будто была нажата клавиатура. Может помочь закрывать всякие вредные окна или автоматизировать работу со стандартными пакетами. Примеры:
      pushkeys "notepad" "Matrix has you!{Enter}{Enter}"
     
chown.exe Устанавливает владельца файлов.
purger.exe
Программа умеет очищать диск от старых файлов. Можно удалять файлы по сроку давности, по общему объему и т.д. Незаменимая штука для систем автоматического обслуживания дисков и архивов. Например, в паре с nnCron может применяться для автоматической чистки каталогов данных, чтобы они не переполнялись. Примеры:
      PURGER.EXE -r C:\*.tmp
      Удалить все файлы с расширением tmp на диске C:
      
      PURGER.EXE -tr C:\*.tmp
      Просто создать в файле PURGER.LOG список всех файлов с расширением
      tmp на диске C:, с указанием их числа и суммарного объема.
      
      PURGER.EXE -rd 5 C:\EServ\NEWS\*.*
      Удалить из дерева (каталога и подкаталогов) C:\EServ\NEWS\ все файлы старше 5 дней.
      
      PURGER.EXE -rs 50 C:\EServ\NEWS\*.*
      В каждом каталоге дерева C:\EServ\NEWS\ оставить не более чем
      по 50 килобайт (51200 байт) свежих файлов.
      
      PURGER.EXE -ra 500 C:\EServ\NEWS\*.*
      В дереве C:\EServ\NEWS\ оставить не более чем 500 килобайт свежих файлов.
      
      PURGER.EXE -re E:\Program Files\*.*
      Удалить все файлы и каталоги в каталоге Program Files на диске E:
     
sleep.exe
Задержка на заданное число секунд. Применяется в командных файлах. Пример: sleep.exe 5
sleepms.exe
Задержка на заданное число миллисекунд. Применяется в командных файлах. Пример: sleepms.exe 5000
spchapi.exe
lhttsrur.exe
lhttseng.exe
Компоненты для инсталляции Speech API. Необходимы для речевого синтезатора.
vidchng.exe Утилита предназначена для изменения разрешения и частоты обновления экрана из командной строки. Пример:
      VidChng.exe 1024x768x32@85 -q
      Установит разрешение 1024x768 при глубине цвета 32-бит и частоте обновления 85 Гц.
      Ключ -q обеспечивает незаметную (quiet) работу программы. 
     
ask.exe Утилита позволяет организовать диалог ввода параметров в командных файлах. Пример:
      ask -v:comport -p:"Введите номер COM-порта"
      --Спрашивает номер COM-порта и запоминает в переменной окружения comport
      ask.exe -v:password -p:"Please enter password" -h -e:"cmd /c msg * You enter password %password%"
      --Показывает диалог ввода (скрытого) с заголовком "Please enter password", запоминает результат
        в переменной окружения password и затем показывает пароль в окне сообщения. 
     
cltimer.exe Утилита измерения времени. Пример:
      cltimer -clear   -- Clear timer
      cltimer -start   -- Start timing
      MakeWork1.exe    -- Do some work
      cltimer -stop    -- Print time since start
      MakeWork2.exe    -- Do one more work
      cltimer -stop    -- Print time since start
     
countln.exe Счетчик строк в текстовых файлах. Пример:
      countln *.pas    -- Сколько строк кода написано...
     
replacestr.exe Консольный фильтр (использует стандартный ввод-вывод) для замены строк. Для работы утилиты используется переназначение потоков ввода-вывода. Пример:
      type file1 | replacestr "one" "two" > file2
      -- Заменяет в файле file1 все строки "one" на "two" и помещает результат в файл file2.
     
replacetxt.exe Утилита замены строк в текстовых файлах. Смотри справку @run replacetxt.htm.
wo.exe
wo.bat
Поиск всех файлов с заданной маской в путях поиска Path. wo.bat отличается тем, что ищет программы также в путях CRW_DAQ_SYS_PATH, CRW_DAQ_CONFIG_PATH. Пример:
      wo x*.exe      -- Показывает список всех исполняемых exe-файлов начинающихся на букву x в пути Path.
      wo.bat x*.exe  -- Показывает список x*.exe-файлов в путях CRW_DAQ_CONFIG_PATH,CRW_DAQ_SYS_PATH,Path.
     
userid Печатает имя пользователя в формате Domain\UserName.
gif2bmp Преобразует (в памяти) изображение GIF в BMP. Пример:
      gif2bmp source.gif target.bmp
     
gnuplot Мощная утилита для научной графики. Поскольку утилита непростая, рекомендуется почитать Help, Man.
ROOT Мощнейший пакет для анализа, обработки и графического представления данных, разработан в CERN. Пакет стал фактическим стандартом в ядерной физике и физике высоких энергий.
unix Команда unix дает простой доступ к пакету UnixUtils, содержащему более сотни UNIX-подобных команд, (частично) портированных под Windows. Предполагается, что эти команды будут использоваться в командных файлах или в командной строке CRW-DAQ.