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

Новосибирский Государственный Технический Университет

Факультет Бизнеса

Кафедра Экономической Информатики

Расчетно-графическая работа

по дисциплине «Операционные системы»

«Реализация команды ATTRIB с дополнительными опциями даты/времени создания, редактирования, доступа к файлу»

Вариант 6

Выполнила: Афанасьева Т.В.

Группа: ФБИ-22

Проверил: Эстрайх И.В.

Новосибирск 2014

Содержание

  1. Описание команд, которые нужно реализовать………………………………………3

  2. Текст программы………………………………………………………………………..4

Список использованной литературы……………………………………………………...12

  1. Описание команд, которые нужно реализовать

Ключ /CD изменит дату и время создания на текущее. Ключ /AD изменит дату и время последнего доступа на текущее. Ключ /MD="День.Месяц.Год Минуты.Часы" изменяет время изменения файла. Ключ /R=0 снимет режим «только для чтения», ключ /R=1 поставит.

  1. Текст программы

Dim FileSystemObj, WShellObj ' Основные объекты, используемые в скрипте.

Dim ArgumentsList ' Коллекция аргументов, передаваемых программе.

Dim I, NeedfulArgumentsList, AllArgumentsList ' Счётчик и переменные для определения корректности ввода аргументов.

Dim FilePath ' Путь файла.

Dim ChangeMode ' Флаг, принимающий значение равное 1 в случае передачи параметра одного или нескольких параметров, изменяющий свойства файла.

' Записываем в переменную коллекцию аргументов.

Dim WRMode, NeedChangeAD, ModifyDateTime, NeedChangeCD

Set ArgumentsList = WScript.Arguments

' Затем Создаём объекты, которые будет использовать далее.

Set WShellObj = WScript.CreateObject("WScript.Shell")

Set FileSystemObj = WScript.CreateObject("Scripting.FileSystemObject")

' Инициалиизируем переменные.

FilePath = ""

ChangeMode = 0

NeedChangeCD = 0

NeedChangeAD = 0

ModifyDateTime = ""

WRMode = -1

NeedfulArgs = 0

AllArgs = 0

' Если среди всех есть параметров «/?», то выводим справочную информацию.

For I = 0 to ArgumentsList.Count - 1

If (ArgumentsList(i) = "/?") then

WriteHelpInfo

End If

Next

' Выводим сообщение об ошибке, если количество элементов меньше 1 или больше 5.

If ((ArgumentsList.Count < 1) or (ArgumentsList.Count > 5)) then

PrintErrorMsg

End If

' Всего максимум может быть три аргумента. Смотрим их все.

For I = 0 to ArgumentsList.Count - 1

Dim ThisArg ' Строка с разбираемым аргументом.

ThisArg = ArgumentsList(i)

If ((InStr(ThisArg, "/F=") = 1) and (Len(ThisArg) > 3) and (FilePath = "")) then ' Имя первого файла/каталога.

FilePath = Mid(ThisArg,4)

NeedfulArgs = NeedfulArgs + 1

AllArgs = AllArgs + 1

If FileSystemObj.GetParentFolderName(FilePath) = "" then

FilePath = WShellObj.CurrentDirectory + "\" + FilePath

End If

CheckExistsFile(FilePath)

End If

If (ThisArg = "/AD") then ' Дата последнего доступа.

ChangeMode = 1

NeedChangeAD = 1

AllArgs = AllArgs + 1

End If

If (InStr(ThisArg, "/CD") = 1) then ' Дата создания.

NeedChangeCD = 1

ChangeMode = 1

AllArgs = AllArgs + 1

End If

If ((InStr(ThisArg, "/MD=") = 1) and (Len(ThisArg) > 4) and (ModifyDateTime = "")) then ' Дата изменения.

ModifyDateTime = Mid(ThisArg,5)

ChangeMode = 1

AllArgs = AllArgs + 1

End If

If ((ThisArg = "/R=0") or (ThisArg = "/R=1")) then ' Режим сравнения каталогов.

ChangeMode = 1

WRMode = Mid(ThisArg,4)

AllArgs = AllArgs + 1

End If

Next

' Проверяем на успешность обработки аргументов и выполненяем основную часть скрипта.

If ((NeedfulArgs = 1) and (AllArgs = ArgumentsList.Count)) then

ShowFileAttrib FilePath

If (ChangeMode = 1) then

If WRMode <> -1 then

SetWriteReadMode FilePath, WRMode

If WRMode = 1 then

WScript.Echo("Атрибут «только для чтения» установлен.")

else

WScript.Echo("Атрибут «только для чтения» снят.")

End If

End If

If NeedChangeAD <> 0 Then

ChangeAccessDateAndTime FilePath

WScript.Echo("Дата и время последнего доступа к файлу изменены на " + cStr(Date) + " " + cStr(Time))

End If

If NeedChangeCD <> 0 Then

ChangeCreateDateAndTime FilePath

WScript.Echo("Дата и время создания файла измененены на " + cStr(Date) + " " + cStr(Time))

End If

If ModifyDateTime <> "" Then

ChangeModifyDateAndTime FilePath, ModifyDateTime

WScript.Echo("Дата и время модификации файла измененены на " + ModifyDateTime)

End If

End If

else

PrintErrorMsg

End If

' Ниже идёт описание функций и процедур.

' Отображение атрибутов файла по адресу FilePath.

Sub ShowFileAttrib(FilePath)

Dim File, Attrs, Dict

Set File = FileSystemObj.GetFile(FilePath)

Attrs = File.Attributes

Set Dict = CreateObject("Scripting.Dictionary")

Dict.Add "ReadOnly", 0

Dict.Add "Hidden", 0

Dict.Add "System", 0

Dict.Add "Volume", 0

Dict.Add "Directory", 0

Dict.Add "Archive", 0

Dict.Add "Alias", 0

Dict.Add "Compressed", 0

If Attrs And 2048 Then

Dict.Item("Compressed") = "Сжатый"

End If

If Attrs And 1024 Then

Dict.Item("Alias") = "Ссылка или ярлык"

End If

If Attrs And 32 Then

Dict.Item("Archive") = "Архивный"

End If

If Attrs And 16 Then

Dict.Item("Directory") = "Папка или файл"

End If

If Attrs And 8 Then

Dict.Item("Volume") = "Диск"

End If

If Attrs And 4 Then

Dict.Item("System") = "Системный"

End If

If Attrs And 2 Then

Dict.Item("Hidden") = "Скрытый"

End If

If Attrs And 1 Then

Dict.Item("ReadOnly") = "Только для чтения"

End If

WScript.Echo("Cвойства файла """ & File.Path & """: ")

WScript.Echo("Дата создания — " & File.DateCreated)

WScript.Echo("Дата последнего изменения — " & File.DateLastModified)

WScript.Echo("Дата последнего доступа — " & File.DateLastAccessed)

Dim StrAttrs

StrAttrs = ""

For Each Attr In Dict

If Dict.Item(Attr) <> "0" then

StrAttrs = StrAttrs + Dict.Item(Attr) + " "

End If

Next

WScript.Echo("Атрибуты файла: " + StrAttrs)

End Sub

' Устанавливает время и дату создания файла на текущую дату.

Sub ChangeCreateDateAndTime(FilePath)

FileSystemObj.CopyFile FilePath, FilePath + "_1_"

FileSystemObj.DeleteFile FilePath

Set File = FileSystemObj.GetFile(FilePath + "_1_")

File.Name = FileSystemObj.GetFileName(FilePath)

End Sub

' Устанавливает новую дату и время изменения файла.

Sub ChangeModifyDateAndTime(FilePath, DT)

Dim ShellObj, Folder, File

Set ShellObj = CreateObject("Shell.Application")

Set Folder = ShellObj.NameSpace(FileSystemObj.GetParentFolderName(FilePath))

Set File = Folder.ParseName(FileSystemObj.GetFileName(FilePath))

On Error Resume Next

File.ModifyDate = DT

If Err.Number <> 0 Then

WScript.Echo("Ошибка! Неверный формат даты.")

WScript.Quit

End If

On Error Goto 0

End Sub

' Устанавливает дату и время последнего доступа на текущее время и дату.

Sub ChangeAccessDateAndTime(FilePath)

FileSystemObj.CopyFile FilePath, FilePath + "_1_"

FileSystemObj.DeleteFile FilePath

FileSystemObj.MoveFile FilePath + "_1_", FilePath

End Sub

' Снимает или устанавливает атрибут «только для чтения»

Sub SetWriteReadMode(FilePath, WRMode)

Dim File

Set File = FileSystemObj.GetFile(FilePath)

If WRMode = 0 then ' Снимает атрибут «Только чтение».

File.Attributes = File.Attributes And not 1

else

File.Attributes = File.Attributes Or 1 ' Устанавливает атрибут «Только чтение».

End If

End Sub

' Вывод справочной информации и выход из скрипта.

Sub WriteHelpInfo

WScript.Echo("Команда ATTRIB отображает атрибуты файла.")

WScript.Echo("Имеет пять параметров.")

WScript.Echo("Параметр /F=имя файла, обязательный.")

WScript.Echo("Параметр /СD устанавливает время и дату создание файла на текущие время и дату.")

WScript.Echo("Параметр /MD=ДД.ММ.ГГ ММ.ЧЧ устанавливает дату и время изменения файла.")

WScript.Echo("Параметр /AD устанавливает время и дату последнего доступа к файлу на текущие время и дату.")

WScript.Echo("Параметр /R=0 или 1, в зависимости от значения, снимает или устанавливает атрибут «только для чтения».")

WScript.Quit

End Sub

' Вывод сообщения об ошибке и выход из скрипта.

Sub PrintErrorMsg

WScript.Echo("Ошибка при выполнении скрипта! Для получения информации о команде ATTRIB введите её с ключом /?.")

WScript.Quit

End Sub

' Функция проверяет существование файла. Если файл не существует, Выводит сообщение об этом.

Sub CheckExistsFile(FilePath)

If FileSystemObj.FileExists(FilePath) = false then

WScript.Echo("Файл с таким именем не найден!")

WScript.Quit

End If

End Sub

Список использованной литературы

  1. Список команд DOS[Электронный ресурс] − Режим доступа: http://ru.wikipedia.org/wiki/Список_команд_DOS

  2. ATTRIB [Электронный ресурс] − Режим доступа: http://mojainformatika.ru/studentam-povtias/komandnaya-stroka-windows/146-komanda-attrib-dlya-izmeneniya-atributov-fajla.html

Соседние файлы в папке Операционные системы