Операционные системы / РГР по ОС
.docxНовосибирский Государственный Технический Университет
Факультет Бизнеса
Кафедра Экономической Информатики
Расчетно-графическая работа
по дисциплине «Операционные системы»
«Реализация команды ATTRIB с дополнительными опциями даты/времени создания, редактирования, доступа к файлу»
Вариант 6
Выполнила: Афанасьева Т.В.
Группа: ФБИ-22
Проверил: Эстрайх И.В.
Новосибирск 2014
Содержание
-
Описание команд, которые нужно реализовать………………………………………3
-
Текст программы………………………………………………………………………..4
Список использованной литературы……………………………………………………...12
-
Описание команд, которые нужно реализовать
Ключ /CD изменит дату и время создания на текущее. Ключ /AD изменит дату и время последнего доступа на текущее. Ключ /MD="День.Месяц.Год Минуты.Часы" изменяет время изменения файла. Ключ /R=0 снимет режим «только для чтения», ключ /R=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
Список использованной литературы
-
Список команд DOS[Электронный ресурс] − Режим доступа: http://ru.wikipedia.org/wiki/Список_команд_DOS
-
ATTRIB [Электронный ресурс] − Режим доступа: http://mojainformatika.ru/studentam-povtias/komandnaya-stroka-windows/146-komanda-attrib-dlya-izmeneniya-atributov-fajla.html