Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Операционные системы / Лабораторная работа № 4

.pdf
Скачиваний:
20
Добавлен:
02.01.2020
Размер:
194.23 Кб
Скачать

Лабораторная работа №4 по дисциплине "Операционные системы, среды и оболочки"

Основные приемы работы с Windows Script Host на VBScript/JScript

При выполнении лабораторной работы для создания скрипт-файлов можно воспользоваться программой Блокнот или файловым менеджером, таким как FAR Manager или аналогичным. Скриптовые языки программирования позволяют автоматизировать процесс управление ресурсами операционной системы. Файлы, содержащие команды на языке VBScript должны иметь расширение *.vbs, а написанные на JScript – *.js. Для запуска скрипта на исполнение используется два способа. Первый способ – консольный режим выполнения, который обеспечивается интерпретатором cscript.exe. Второй способ – режим выполнения в графической среде Windows, обеспечиваемый использованием интерпретатора wscript.exe. В первом случае пользователь будет наблюдать черное текстовое окно, такое же, как и при работе с интерпретатором команд MS-DOS, все операции ввода и вывода будут сосредоточены в рамках консольного окна. Достоинствами такого режима является возможность работать с потоками ввода/вывода и перенаправлять их в соответствии с потребностями пользователя. Однако при использовании второго способа программа выполняется без признаков визуализации, за исключением непосредственных операций вывода сообщений, что позволяет исполнять скрипт незаметно для пользователя. Оба варианта различаются кодировками, которые используются при обработке текстовой информации. В первом случае это кодировка DOS, а во втором – Windows. Операции с потоками ввода/вывода возможны только для первого варианта.

Запустите командную строку cmd.exe. Создайте в подкаталоге Вашей группы каталога C:\STUDENT директорию Lab4. Все действия текущей лабораторной работы выполняйте в ней. Создайте текстовый файл HelloWorld.!!! с использованием команды COPY CON HelloWorld.!!!. В текстовый файл поместите команду WSH следующего содержания WScript.Echo(“DOS:Здравствуй, мир!”);. Запустите Ваш первый скрипт в командной строке при помощи интерпретатора cscript //NoLogo //E:JScript HelloWorld.!!!. Запустите тот же самый скрипт с использованием команды wscript //E:JScript HelloWorld.!!!.

Объект WScript, кроме метода Echo, содержит другие немаловажные методы и свойства. Для работы с потоками ввода/вывода используются соответствующие свойства WScript.StdIn и WScript.StdOut. Каждый из потоков имеет свои собственные методы для работы с проходящей по ним информацией. Read считывает из потока StdIn заданное параметром число символов и возвращает полученную строку. ReadAll считывает символы из потока StdIn по достижению символа конца файла [Ctrl]+[Z] с кодом ASCII 26. ReadLine возвращает целую строку, считанную из потока StdIn. Skip пропускает при считывании из потока StdIn указанное в качестве параметра число символов. SkipLine пропускает целую строку при чтении из потока StdIn. Метод Write выдает в поток StdOut символы из указываемой в качестве параметра строки, без перевода каретки на новую строку. Вызов метода WScript.StrOut.WriteLine в консольном режиме аналогичен использованию WScript.Echo. Использование метода WriteBlankLines выдает в поток StdOut указанное в качестве параметра количество пустых строк с переводом на новую строку.

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

служебного символа |. Располагая попеременно в одной строке команды MS-DOS и программу на скриптовом языке можно достичь определенного эффекта. К примеру, имеется список фамилий студентов набираемый в произвольном порядке с использованием пустых строк и пробелов с начала строки. Требуется отсортировать подобный список и пронумеровать его в порядке сортировки, а также вывести результат в текстовый файл text1.txt. Для сортировки необходимо использовать команду-фильтр sort, а вот другие способы обработки текстового потока выполняются с помощью скриптов до сортировки и после.

Создайте первый такой скрипт script1.vbs, который будет построчно обрабатывать входящий поток и выполнять удаление пустых строк, а также пробелов с обеих сторон от текста. Для считывания из входящего потока текстовых строк и их обработки воспользуйтесь переменной String1=WScript.StdIn.ReadLine. Так как входящий поток может состоять из некоторого количества строк текста, необходимо организовать цикл do while loop, в котором построчно обрабатывать каждую строку. Окончание потока можно проверить по свойству AtEndOfStream потока StdIn. Фрагмент скрипт-файла будет выглядеть следующим образом

do while not WScript.StdIn.AtEndOfStream

...

loop

Обрабатывая значение переменной String1 с помощью функции Trim можно удалить все пробелы с обеих сторон от содержательной части текста. То есть, String2=Trim String1. Скорректированную строку текста String2 возвращаем методом WriteLine уже в поток вывода StdOut для дальнейшей ее обработки следующими за скриптом командами или программами.

Передав текст без лишних пробелов и пустых строк команде sort, потом необходимо его перенаправить в скрипт нумерации строк script2.js. Создайте это скрипт самостоятельно, используя структуру программы script1.vbs в качестве шаблона. Цикл do while loop, используемый VBScript, в JScript имеет несколько иной синтаксис while (!WScript.StdIn.AtEndOfStream){

...

}

Выполните конвейер команд, выполняющий запрос набора строк текста, удаления из них пустых строк и лишних пробелов с обеих сторон каждой из строк, сортировку, нумерацию строк и сохранения потока в файле text1.txt.