Подготовка рабочей среды


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

Что-ж приступим.
В качестве инструмента нам потребуется утилита архивирования командной строки 7Zip скачивайте и устанавливайте ее себе.
Рекомендую сразу добавить ее в path, чтобы потом не писать каждый раз полный путь.
С этого и начнем.
У Windows есть специальная переменная окружения, которая называется PATH, что переводится, как путь. В этой переменной, через точку с запятой, перечислены все папки, куда следует заглянуть, в случае, если набранная вами команда, не является встроенной командой, тогда она считается названием исполняемого файла и ищется сначала в текущей папке, а если не находится, то в папках перечисленных в переменной PATH.
Соответветсветсвенно, вы можете путь добавить, через "Мой компьютер" -> "Свойства" -> "Дополнительно" -> "Переменные окружения".
А можно иначе:

Set path=%path%;полный_путь_туда,_куда_установили_7zip_не_обрамляя_в_кавычки_
Ну например, предположим, что установили мы его в "Program Files".

Set path=%path%;c:\program files\7zip

Как видно, командой set устанавливаем переменную path равной...
Обрамление процентами означает, что вместо того названия переменной и окружающих процентов, стоит вставить ее значение из окружения. То есть, вместо %path% подставится ее текущее значение, после чего, идет наша точка с запятой, а потом путь до 7Zip. Таким образом получается длинная, длинная строка, оканчивающаяся указанием на 7Zip. Размер ее не может превышать 8 килобайт, то есть, примерно, 8 тысяч знаков. Это ограничение команды Set, а не переменной path.

Давайте перейдем в папку Temp, чтобы потом можно было за собой быстро прибрать.
Далее курсивом я буду писать команды.

Сложные примеры буду помещать в областях просмотра.

Начнем с подготовки. В качестве рабочего материала, нам нужно много файлов и при этом, чтобы они были в меру большими, с вложеннымим папками, но занимали не много времени при архивировании. На мой взгляд в качестве объекта испытания можно взять Windows\Help или Windows\system32\drivers, давайте последнюю и для разнообразия задачи еще и Windows\Inf.
Все это скопируем в какую-нибудь папку в папке Temp, например "TeachingTheShell".

Способ номер 1: XCOPY - это расширение команды COPY, выполненное в виде утилиты, хранящейся в system32 и позволяющей копировать сразу много всего со всем.
XCOPY ОТКУДА КУДА ключи
Ключей может быть много и они задают режим работы этой утилиты. (Не забывайте о том, что почти любая утилита имеет у себя возможность получения подсказки о том, как ей пользоваться. Подавляющее большинство утилит положительно реагируют на "/?" в командной строке). Не поленитесь: Xcopy /?
Упс.. Когда приехал хвост поезда, голова оказалась уже за пределами перрона.
Не порядок.
Есть еще одна утилита, под названием MORE. В ее задачу входит показывать построчно или поэкранно, то что подают ей на вход.
Поэтому мы ВЫХОД XCOPY подадим на ВХОД more.
XCOPY /? |MORE

Согласитесь, так лучше ?
Пробел и Enter мотают экран вверх поэкранно или построчно.
Осмотримся.
cd

Если CD запускается без параметра куда нужно перейти, она показывает текущий полный путь.
В среде операционной системы есть отличные штуки, под названием переменные окружения. Работать с ними можно при помощи команды SET.
SET.
Это список всех переменных окружения, которые у вас сейчас есть. Как видите, тут есть и переменные, которые описывают количество процессоров и кто вы, где вы и так далее. Все это может понадобиться в разное время, просто имейте в виду, что они есть. Большинство из них стандартные в своем именовании и они гарантированно есть на всех компьютерах от Windows 2000 до Vista и будут, в чем я не сомневаюсь.

Здесь есть важные для нас переменные: SystemDrive, SystemRoot, TEMP, TMP, USERPROFILE.
Адресуются, то есть, используются, собственно, ради чего они и есть, простым способом, они окаймляются знаком "%".
Посмотрим, как это работает:

echo %SystemRoot%.
О! Работает.
Теперь перейдем в нaшу рабочую папку:
Для этого посмотрим, где она находится
Echo %temp%.

Смотрим, на букву диска. Это та, которая перед двоеточием в самом начале и переходим на нее. Обычно это буква C:
C:
CD %temp%

Бах! И мы уже глубоко.
Теперь начнем обживаться.
Создадим здесь нашу рабочую папку "TeachingTheShell".
md TeachingTheShell

Теперь зайдем туда, для этого можно написать "cd TeachingTheShell", но мы поступим иначе.
Понажимайте стрелки курсора вверх и вниз. Видите, что происходит ? Вы перебираете ранее набранные команды. Это удобно. Теперь нажмите клавишу F3 - это повтор последней набранной команды, но он с особенностью, он повторяет ее со следующей позиции, которую вы набрали.
Жмите esc, это отмена всего набранного. Набирайте CD и жмите F3.
Оп! Подставилось "TeachingTheShell". Удобно. Поэксприментируйте.

Итак, мы создали папку и зашли в нее. Но она пустая. Нам надо ее заполнить.
Давайте здесь создадим папку System32 и потом скопируем в нее содержимое из %SystemRoot%\System32\drivers.
MD System32

Теперь у нас готово место, куда мы можем поместить копию System32\drivers.
xcopy %SystemRoot%\System32\Drivers\*.* .\System32, но это не все. Нам надо указать Xcopy, как копировать, то есть в каком режиме. Для этого еще раз вглядимся в помощь по XCOPY и увидим там ключ "/E", указывающий копировать папки в том числе и пустые, то есть не содержащие файлов. Вот теперь у нас все готово.

xcopy %SystemRoot%\System32\Drivers\*.* .\System32\. /e - обратите внимание на запись ".\System32", ее можно было написать и так: ".\System32\". То есть копируем из %SystemRoot%\System32\Drivers\ все файлы с любым именем и расширением "*.*" в папку ".\" из которой выходит созданная нами, только сейчас, подпапка "System32".

Теперь, когда все скопировано, сделаем тоже самое для "Inf".
md Inf
xcopy %SystemRoot%\Inf*.* .\inf

Все. Рабочая среда подготовлена.

Способ номер 2:

Вот оно могущество команды "FOR".
Вот с него мы и продолжим, а фактически начнем осваивать скриптинг.
Оператор "FOR" >>>>>

Hosted by uCoz