Поиск по сайту:

Начало работы с пакетными файлами во FreeDOS


Пакетные файлы — отличный способ писать собственные простые программы и автоматизировать задачи, которые обычно требуют большого количества ввода.

В Linux принято создавать сценарии оболочки для автоматизации повторяющихся задач. Аналогичным образом, в FreeDOS, реализации старых операционных систем DOS с открытым исходным кодом, вы можете создать пакетный файл, содержащий несколько команд FreeDOS. Затем вы можете запустить командный файл для выполнения каждой команды по порядку.

Пакетный файл создается с помощью текстового редактора ASCII, например приложения FreeDOS Edit. Создав пакетный файл, вы сохраняете его с именем файла и расширением .bat. Имя файла должно быть уникальным. Если вы используете имя команды FreeDOS в качестве собственного имени файла, команда FreeDOS, вероятно, будет выполнена вместо вашего командного файла.

Практически все внутренние и внешние команды FreeDOS можно использовать в пакетном файле. Когда вы создаете пакетный файл, вы, по сути, пишете программу. Пакетные файлы FreeDOS, возможно, не обладают мощью структурированного языка программирования, но они могут быть очень полезны для быстрых, но повторяющихся задач.

Комментирование вашего кода

Полезная привычка № 1, которой должен научиться любой программист, — это добавлять в программу комментарии, объясняющие, что делает код. Это очень хорошая вещь, но вы должны быть осторожны, чтобы не обмануть операционную систему, заставив ее выполнить ваши комментарии. Чтобы избежать этого, поместите REM (сокращение от «remark») в начале строки комментария.

FreeDOS игнорирует строки, начинающиеся с REM. Но любой, кто посмотрит на исходный код (текст, который вы написали в пакетном файле), сможет прочитать ваши комментарии и понять, что он делает. Это также способ временно отключить команду, не удаляя ее. Просто откройте пакетный файл для редактирования, поместите REM в начало строки, которую хотите отключить, и сохраните его. Если вы захотите снова включить эту команду, просто откройте файл для редактирования и удалите REM. Этот метод иногда называют «комментированием» команды.

Настроить

Прежде чем вы начнете писать свои собственные командные файлы, я предлагаю создать временный каталог во FreeDOS. Это может быть безопасным местом для работы с пакетными файлами без случайного удаления, перемещения или переименования важных системных файлов или каталогов. В FreeDOS вы создаете каталог с помощью команды MD:

C:\>MD TEMP
C:\>CD TEMP
C:\TEMP>

Команда ECHO FreeDOS управляет тем, что отображается на экране при запуске командного файла. Например, вот простой однострочный пакетный файл:

ECHO Hello world

Если вы создадите этот файл и запустите его, вы увидите предложение, отображаемое на экране. Самый быстрый способ сделать это — из командной строки: используйте команду COPY, чтобы получить ввод с клавиатуры (CON) и поместить его в файл TEST1. .BAT. Затем нажмите Ctrl+Z, чтобы остановить процесс копирования, и нажмите Return или Enter на клавиатуре, чтобы вернуться к подсказке.

Попробуйте создать этот файл как TEST1.BAT во временном каталоге, а затем запустите его:

C:\TEMP>COPY CON TEST1.BAT
CON => TEST1.BAT
ECHO Hello world
^Z

C:\TEMP>TEST1
Hello world

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

Что делать, если вы хотите отобразить пустую строку? Вы можете подумать, что команда ECHO сама по себе поможет, но сама по себе команда ECHO запрашивает FreeDOS ответить, включен ли ECHO или нет. выключенный:

C:\TEMP>ECHO
ECHO is on

Чтобы получить пустую строку, используйте знак + сразу после ECHO:

C:\TEMP>ECHO+

C:\TEMP>

Переменные пакетного файла

Переменная — это место хранения информации, которую пакетный файл должен временно запомнить. Это жизненно важная функция программирования, поскольку вы не всегда знаете, какие данные вы хотите использовать в пакетном файле. Вот простой пример для демонстрации.

Создайте TEST3.BAT:

@MD BACKUPS
COPY %1 BACKUPS\%1

Переменные обозначаются использованием символа процента, за которым следует число, поэтому этот пакетный файл создает подкаталог BACKUPS в вашем текущем каталоге, а затем копирует переменную %1 в Папка BACKUPS. Что это за переменная? Вам решать, когда запускать командный файл:

C:\TEMP>TEST3 TEMP1.BAT
TEST1.BAT => BACKUPS\TEST1.BAT

Ваш пакетный файл скопировал TEST1.BAT в подкаталог BACKUPS, поскольку вы определили этот файл в качестве аргумента при запуске пакетного файла. Ваш пакетный файл заменил TEST1.BAT на %1.

Переменные являются позиционными. Переменная %1 — это первый аргумент, который вы передаете команде, а %2 — второй и так далее. Предположим, вы создаете пакетный файл для вывода содержимого каталога:

DIR %1

Попробуйте запустить его:

C:\TEMP>TEST4.BAT C:\HOME
ARTICLES
BIN
CHEATSHEETS
GAMES
DND

Это работает так, как ожидалось. Но это не удается:

C:\TEMP>TEST4.BAT C:\HOME C:\DOCS
ARTICLES
BIN
CHEATSHEETS
GAMES
DND

Если вы попробуете это сделать, вы получите список первого аргумента (C:\HOME), но не второго (C:\DOCS). Это связано с тем, что ваш пакетный файл ищет только одну переменную (%1), и кроме того, команда DIR может использовать только один каталог.

Кроме того, вам не обязательно указывать расширение командного файла при его запуске — если только вам не повезет выбрать имя для командного файла, которое соответствует одной из внешних команд FreeDOS или чему-то подобному. Когда FreeDOS выполняет команды, они выполняются в следующем порядке:

  1. Внутренние команды
  2. Внешние команды с расширением *.COM
  3. Внешние команды с расширением *.EXE
  4. Пакетные файлы

Несколько аргументов

Хорошо, теперь перепишите файл TEST4.BAT, чтобы использовать команду, принимающую два аргумента, чтобы вы могли увидеть, как это работает. Сначала создайте простой текстовый файл с именем FILE1.TXT с помощью приложения EDIT. Поместите внутрь какое-нибудь предложение (например, «Привет, мир») и сохраните файл в рабочем каталоге TEMP.

Затем используйте EDIT, чтобы изменить файл TEST4.BAT:

COPY %1 %2  
DIR

Сохраните его, затем выполните команду:

C:\TEMP\>TEST4 FILE1.TXT FILE2.TXT

После запуска пакетного файла вы увидите список каталогов вашего каталога TEMP. Среди перечисленных файлов есть FILE1.TXT и FILE2.TXT, созданные вашим пакетным файлом.

Вложенные пакетные файлы

Другая особенность пакетных файлов заключается в том, что они могут быть «вложенными», то есть один пакетный файл можно вызывать и запускать внутри другого пакетного файла. Чтобы увидеть, как это работает, начните с простой пары пакетных файлов.

Первый файл называется NBATCH1.BAT:

@ECHO OFF
ECHO Hello
CALL NBATCH2.BAT  
ECHO world

Первая строка (@ECHO OFF) незаметно сообщает пакетному файлу, что при его запуске должны отображаться только выходные данные команд (а не сами команды). В предыдущих примерах вы, вероятно, заметили, что было много отзывов о том, что делает командный файл; в этом случае вы разрешаете пакетному файлу отображать только результаты.

Второй пакетный файл называется NBATCH2.BAT:

echo from FreeDOS

Создайте оба этих файла с помощью EDIT и сохраните их в подкаталоге TEMP. Запустите NBATCH1.BAT и посмотрите, что произойдет:

C:\TEMP\>NBATCH1.BAT  
Hello
from FreeDOS
world

Ваш второй пакетный файл был выполнен изнутри первого с помощью команды CALL, которая предоставила строку «из FreeDOS» в середине вашего сообщения «Hello world».

Скрипты FreeDOS

Пакетные файлы — отличный способ написать собственные простые программы и автоматизировать задачи, которые обычно требуют большого количества ввода. Чем больше вы используете FreeDOS, тем лучше вы будете знакомы с ее командами, и как только вы узнаете команды, вам останется лишь перечислить их в пакетном файле, чтобы ваша система FreeDOS облегчила вам жизнь. Попробуйте!

Некоторая информация в этой статье ранее была опубликована в уроке DOS 15: Введение в пакетные файлы и уроке DOS 17: Переменные пакетного файла; вложенные пакетные файлы (оба CC BY-SA 4.0).

Статьи по данной тематике: