Setlocal enabledelayedexpansion cls 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Setlocal enabledelayedexpansion cls



 

FOR /F "TOKENS=1,2,3,4 SKIP=5" %%i IN ('dir /a:-d') DO (set dat=%%i

 

set year=!dat:~6,4!

if!year! gtr 2011 echo %%i %%j %%l

 

)

 

В этом примере осуществляется разбор команды dir, выводящей на экран информацию о файлах из текущей директории. Формат вывода команды dir:

 

Том в устройстве D имеет метку DATAD Серийный номер тома: CCE5-4ACE

 

Содержимое папки D:\tmp

 

17.08.2012 17:52   1.bat
16.07.2012 15:39   1.txt
17.05.2012 11:47 24 951 all.txt
15.08.2012 16:23   arc.bat

 


15.08.2012 16:38 161 099 arc.rar
17.08.2012 12:32 298 700 docfiles.lst
17.08.2012 17:52   list.txt
11.10.2005 03:51 302 080 Rar.exe
16.08.2012 14:12 2 862 report.txt
29.05.2006 12:44 22 089 words15.08.2012.txt
  файлов 812 090 байт  

0 папок 276 914 065 408 байт свободно

 

С помощью команды for осуществляется разбор каждой строки вывода команды и в первом столбце выделяется год создания файла. После этого на экран выводится информация только о тех файлах, которые были созданы после 2011 года. Для ключа TOKENS в последнем примере будут идентичными следующие

определения: TOKENS=1,2,3,4; TOKENS=1,2,3-4; TOKENS=1-4.

 

В последнем примере обращает на себя внимание не встречавшееся ранее обращение к переменным вида !имя_переменной! Такое обращение характерно для работы с переменными в команде цикла или внутри блока команд цикла. Оно связано с внутренними особенностями работы командного интерпретатора с пе-ременными в этих областях кода. Обычное обращение % имя_переменной % при-водит к ошибкам и чтобы избежать проблем с инициализацией и работой с пере-менными в таком контексте необходимо использовать в командном файле дирек-

тиву SETLOCAL ENABLEDELAYEDEXPANSION, и сами переменные в командах

 

цикла (и условных командах) обрамлять символами ‘!’.

 

В команде for /f можно также обработать отдельную строку. Для этого следует ввести нужную строку в кавычках вместо набора имен файлов в скобках. Обработка будет выполнена аналогично каждой отдельной строке файла в преды-дущих примерах. Например, файл следующего содержания:

 

@ECHO OFF

 

for /f " TOKENS=2,3* DELIMS=, " %%i in ("Один, Два Три, Четыре, Пять, Шесть, Семь”) do @ECHO %%i:%%j:%%k

 

выведет:

Два Три: Четыре: Пять, Шесть, Семь

 

Команда for разбирает строку по заданному разделителю (,) и выводит значение второй (%%i), третьей(%%j) строк и хвоста строки (%%k).

 

Еще одной возможностью оператора for, уже встречавшейся при изучении параметров командных файлов, является расширение переменных цикла до пол-ного пути, расширения, имени файла, его размера и т.п. В таблице 10 еще раз опи-саны эти расширения для параметра %%i.

 

  Таблица 10. Операторы для переменных команды for
Операторы Описание
%%~Fi Переменная %i расширяется до полного имени файла
%%~Di Из переменной %i выделяется только имя диска
%%~Pi Из переменной %i выделяется только путь к файлу
%%~Ni Из переменной %i выделяется только имя файла
%%~Xi Из переменной %i выделяется расширение имени файла
%%~Si Значение операторов N и X для переменной %i изменяется
  так, что они работают с кратким именем файла
%%~Ti Дата и время создания файла
%%~Zi Размер файла

 


%%~Ai Атрибуты файла


 

Например, следующий командный файл выведет суммарный размер всех файлов в папке, имя которой передано в качестве параметра.

@ECHO OFF

 

CHCP 1251

 

SETLOCAL ENABLEDELAYEDEXPANSION set /a Sum=0

 

for %%i in (%1\*.*) do set /a Sum=!Sum!+%%~Zi echo Размер файлов в папке %1 - %Sum%

 

Заключение

 

Командные файлы предоставляют администратору достаточно широкие возможности для автоматизации действий по настройке, обслуживанию и мони-торингу состояния компьютера под управлением ОС Windows. И хотя на сего-дняшний день для решения существуют более мощные и гибкие средства (WSH, PowerShell), о которых речь пойдет на следующих лабораторных, в связи с нали-чием большого количества практических наработок, а также благодаря относи-тельной простоте, командные файлы по прежнему используются на практике.

 

ЗАДАНИЕ

 

1. Ознакомьтесь с теоретическими основами использования команд ОС 2. Windows в текстовом режиме в настоящих указаниях и конспектах лекций.

 

Выполните задания 2.1-2.10

 

Все задания необходимо выполнить в текстовом интерфейсе команд-ной строки Windows. Выполнение каждой команды необходимо подтвердить в отчете снимком окна командной оболочки с самой командой и результатом ее выполнения (фрагментом результата при большом объеме). Задания, требующие создания командных файлов, должны сопровождаться исходными текстами скриптов.

 

2.1 Запустите окно командной оболочки Cmd.exe и сделайте текущей корневую папку диска С:

2.2 Откройте справочник по командной строке Windows.

2.3 Запишите названия как минимум 10 внешних и 10 внутренних команд

 

Windows. В отчете продемонстируйте их работу

 

2.4 Изучите справку по команде Dir. Используя эту команду выведите на экран список всех скрытых и системных файлов на диске С:

 

2.5 Изучите справку по команде Tasklist. Создайте в папке spo1 на диске С: \Program_files текстовый файл, содержащий список процессов, использовавших процессор более 10 минут. Отсортируйте список с использованием команды sort.

 

2.6 Изучите справку по команде Taskkill. Запустите несколько экземпляров стандартного калькулятора Windows. Закройте все калькуляторы одной ко-мандой.

 

2.7 Создайте условную команду с использованием операторов && или ||, которая в случае, если запущен хотя бы экземпляр стандартного блокнота Windows, дописывал бы в файл reportNP.txt дату и время обнаружения и за



крывал все запущенные блокноты.

 

2.8 Определите собственную переменную среды в сеансе командного окна. Убедитесь, что эта переменная уничтожается при закрытии окна и недоступна в других командных окнах.

 

2.9 Создайте командный файл, который копирует все файлы с расширением, заданным в качестве первого параметра из папки, заданной вторым парамет-ром в папку, заданную третьим параметром. С помощью команды at реали-зуйте запуск этого командного файла в заданный момент времени.

 

2.10 Выполните индивидуальное задание в соответствии с заданием. Для командного файла обеспечьте возможность запуска с ключом /a для вывода информацию о разработчике, а также с ключом /h для вывода справки о ко-мандном файле (назначение, перечень ключей или параметров).

 

1) Подсчитать размер папки вместе с содержимым всех ее подпапок. Имя папки брать как параметр командного файла.

 

2) Вывести содержимое папки, отсортированное на выбор (с использованием команды choice) по дням, месяцам или годам создания файлов. Имя папки брать как параметр командного файла.

 

3) Задать в текстовом файле список процессов, запрещенных к запуску. Соз-дать командный файл, завершающий все запущенные процессы из списка.

 

4) Создать командный файл, который синхронизирует содержимое заданной папки с эталонной папкой. После запуска командного файла в заданной папке должен оказаться тот же набор файлов, что и в эталонной (если файла нет – он копируется из эталонной, если найдется файл, которого нет в эталонной - уда-ляется). Если файл с некоторым именем есть и в заданной папке и в эталонной

 

–удалять и перезаписывать его не допускается Имена папок передаются как па-раметры командного файла

 

5) Вывести на экран все различия двух папок, имена которых передаются в качестве параметров (отличия искать в размерах, именах и атрибутах файлов).

 

6) Вывести список всех подпапок в папке, имя которой передается команд-ному файлу в качестве параметра, отсортировав их в порядке возрастания ко-личества находящихся в них файлов (включая подпапки).

 

7) Создать командный файл, который создает архивы файлов некоторой пап-ки, имя которой задано в качестве параметра, созданных в текущем году. Для файлов каждой недели создавать отдельный архив. У уже помещенных в архив файлов снимать атрибут a с целью предотвращения повторной архивации. Файлы архивов копировать в отдельную папку, имя которой передается скрип-ту вторым параметром.

 

8) Создать командный файл, создающий в системе нового пользователя и помещающего его в группу “Опытные пользователи” и удалив из группы «Пользователи» (использовать команды net user и net localgroup).Имя поль-зователя и пароль передаются в качестве параметров, если не переданы - вво-дятся с клавиатуры. Для пользователя создать папку в D:\work с именем Folder_Имя_пользователя, скопировав в нее все файлы из ранее созданной эта-лонной папки. Для созданной папки пользователя и всех ее файлов определить права доступа Полный доступ для самого пользователя и Нет доступа для всех остальных пользователей (использовать команду cacls).



 



Поделиться:


Последнее изменение этой страницы: 2016-08-16; просмотров: 553; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.240.178 (0.015 с.)