Примеры использования Batch scripting в Windows Vista

Обсужнение только OS Windows Vista

Модератор: NetSkipper

Правила форума
Администрация не несет ответственности за размещенные на этом форуме сообщения.
Если сообщения как то ущемляют Ваши права, обратитесь к администрации, и информация будет удалена с форума. Категорически запрещается выкладывать линки на продукцию Майкрософт!
Нарушители будут наказаны, в соответствии с общими правилами форума.
Сообщения и темы, которые не будут соответствовать тематике раздела, будут удаляться.
Аватара пользователя
igor7
Пользователь
Сообщения: 3182
Зарегистрирован: 13.01.2007, 11:43
smartphone: HTC ONE
Откуда: Israel

Даритель

Примеры использования Batch scripting в Windows Vista

Сообщение igor7 »

Batch scripting является мощным аспектом ОС семейства Windows. Если Вы не знаете, Batch scripting,-это файлы, которыте выполняются в командной строке. В теории, все задачи, которые можно выполнить в Windows с помощью графического интерфейса могут быть завершены с помощью пакетного сценария (использования скриптов). Эта статья представляет собой введение в batch scripting в Windows Vista. В ней будет рассказано, как автоматически создавать резервную копию жесткого диска или содержимого любой другой папки и удалить ваши временные файлы без установки дополнительного программного обеспечения.
Для начала знакомства с использованием Batch scripting давайте создадим на десктопе простой batch файл.
Для этого открываем Notepad (Start >> All Programs >> Accessories >> Notepad) и пишем туда следующие строчки:
В первой строке пишем: echo "hello"
Во второй строке: echo "the end"
Должно получиться так:

Изображение

Сохраним созданный файлик по именем hello.bat. Теперь открываем Command Prompt (Start >> All Programs >> Accessories >> Command Prompt), пишем в открывшемся окне cd Desktop, а затем hello.bat. И как результат мы видем следующую картину:

Изображение

Когда Vista запускает исполнение batch файла, каждая строка в нем исполняется отдельно. В нашем простом примере на экран сначала выводится "hello", а затем, в следующей строке, "the end". "Echo",- это простая команда которая выводит нужную нам информацию на экран. Ее можно использовать для этой цели в различных сценариях использования Batch scripting .

Теперь давайте посмотрим как все это может нам помочь в реальной жизни.
Откроем еще раз Notepad. В првой строке напишем cd c:\
а во второй xcopy c: e:\backup /s /e /h /D

Изображение

Сохраним его как Test.bat и запустим. Команда xcopy скопирует все содержимое диска С в папку e:\backup.
Особенное удобство этого сценария заключается в том, что после первого раза, когда вы запустите файл Test.bat , будет выполняться резервное копирование файлов, которые были изменены. Иными словами, он не будет копировать весь жесткий диск каждый раз, когда вы запустите его,- он только копирует файлы, которые были изменены с предидущего раза.

Этот процесс можно автоматизировать, если поместить наш Test.bat в папку Start >> All Programms >> Startup.
Теперь резервное копирование файлов будет проишодить без Вашего вмешательства, каждый раз, когда вы будете заходить в систему.

По такому же сценарию можно автоматизировать процесс очистки папки Temp. Windows Vista Disk Cleanup Wizard делает хорошую работу, но он не удаляет файлы, которые находятся в папке Temp, пока они находятся там, если я не ошибаюсь, меньше чем семь дней. Поэтому, если нам нужно чтобы это случалось чаще, мы можем автоматизировать этот процесс так же как мы это сделали в случае с резервным копированием файлов.
Открываем Notepad. В первой строке пишем cd C:\Users\%username%\AppData\Local
а во второй rmdir /S /Q Temp. Сохраняем его как Test1.bat и кладем его в папку Startup. Тперь при каждом входе в систему, все временные файлы, которые оставались в папке Temp с вашего последнего сеанса, будут автоматически удалены.

Конечно же все что описывалось выше это хорошо, но я не думаю, что резервное копирование всего диска с помощью Batch scripting - это хорошая идея... Во первых на это уходит много времени, а во вторых, есть множество других, более эффективных способов, сохранить содержимое логического диска. Но все же я хочу рассказать как я пользуюсь Batch scripting на своем домашнем компютере, на котором установлена Windows Vista Ultimate. Я привык сохранять все линки, которымя пользуюсь в меню Favorites в IE. Там у меня все линки расположены в папках соответвующих той или иной тематике. Мне очень важно, чтобы эта папка не пропала случайным образом, поэтому я использую Batch scripting для резервного копирования содержимого папки Favorites в другое место. Также в этом файле я объеденил резервное копирование папки Favorites с удалением содержимого папки Temp. Вот как выглядит содержимое моего Backup.bat:

Код: Выделить всё

cd c:\
xcopy C:\Users\Igor\Favorites G:\Backup\VistaFavorites /s /e /Y
cd C:\Users\%username%\AppData\Local 
rmdir /S /Q Temp
Как Вы видите, содержимое папки Favorites копируется на другой логический диск (а с него потом на мою флешку, раз в неделю примерно) в папку VistaFavorites. Обратите внимание на название папки. Я специально не сделал пробел между словами Vista и Favorites, так как команда xcopy не умеет работать с именами файлов или папок если в них есть пробелы, так что будьте внимательны!
Папка Favorites это только пример того, как я использую скрипт, Вы можете по этому сценарию создавать скрипты, которые будут копировать данные из тех папок, содержание которых важно для Вас...

Положив этот файл в папку Startup:

Изображение

каздый раз, заходя в компютер, я воочию наблюдаю процесс сохранения файлов:

Изображение

Обычно такие скрипты настраиваются на исполнение во время процесса log off. Поэтому, далее я расскажу как настроить чтобы то, что описано выше, происходило во время выключения компютера. И, пользясь случаем, расскажу о таком новшестве в Windows Vista, как multiple local group policies. Сразу скажу, что для пользователей Home версий Windows Vista все что будет описано далее не актуально. Сначала небольшое отступление, по поводу multiple local group policies... В предидущих версия ОС была остнастка, которая называлась local security policies. С ее помощью можно было конфигурировать различные настройки, которые впоследствие распостарнялись на всех пользователей данного компютера. Например, можно было запретить запуск файлов с раширением vbs. Проблема заключалась в том, что эти настройки распостранялись на всех пользователей компютера. В Windows Vista во-первых стало больше доступных настроек, а во-вторых,- груповые политики теперь можно настраивать для различных пользователей одного и того же компютера независимо друг от друга.
Рассмотрим простой пример. Я хочу, чтобы Backup.bat, о котором шла речь выше, исполнялся во время выключения компютера, а не тогда, когда я захожу в систему. И кроме того, мне нужно чтобы резервировались только мои фавориты, а не всех пользователей моего компютера.

Для эого делаем следующее:

1. Идем в Start >> Run пишем mmc и жмем на Enter. В открывшемся окне идем в меню File >> Add or Remove Snap-inn:

Изображение

Из появившегося списка выбираем Group Policy Object Editor и жмем на кнопку Add:

Изображение

2. Жмем на ОК и перед нами появляется такое окошко:

Изображение

В строке выбора Group Policy Object жмем на кнопку Browse и в открывшемся окошке переходим в закладку Users:

Изображение

Здесь по идее мы должны видеть всех пользователей, для которых были созданы аккаунты на данном компютере.
И именно здесь мы имеем возможность выбрать на кого будут действовать настройки, которые мы собираемся конфигурировать. Если выбрать Administrator,- настройки будут действовать только на него. Если выбрать группу Administrators,- настройки будут действовать на всех пользователей, аккаунты которых принадлежат к группе администраторы, Non-Administrators,- на всех стандартных пользователей. Я же хочу, чтобы настройки распостранялись только на мой аккаунт, поэтому я выбираю Igor. Затем жмем на ОК и Finish, пока не окажемся в окне mmc, к которому мы добавили объект Group Policy Object Editor.

Теперь самое время заняться настройками. Идем по следующей схеме: Local Computer\Igor Policy >> User Configuration >> Windows Settings >> Scripts (Logon/Logoff):

Изображение

3. В правой половине окна делаем двойной клик на Logoff:

Изображение

и жмем на кнопку Show files:

Изображение

4. В открывшееся окно копируем наш Backup.bat и затем закрываем его:

Изображение

5. Теперь жмем на кнопку Аdd:

Изображение

И затем, нажав на Browse:

Изображение

В открывшемся окне выбираем наш файл, и кликаем на кнопку Open:

Изображение

Теперь, нажав на ОК, если все было сделано правильно, то выглядеть это должно так:

Изображение

6. Жмем на ОК и возвращаемся в окно mmc Local Computer\Igor Policy. Теперь, чтобы насладиться зрелищем резервного копирования файлов и очищения папки Temp, нужно включить еще одну настройку. Это делать необязательно, просто скрипт будет запускаться в бэкраунде и мы не сможем наблюдать за его выполнением.
Открываем Local Computer\Igor Policy >> User Configuration >> Administrative Templates >> System >> Scripts:

Изображение

В правой полвине окна делаем двойной клик на Run logoff scripts visible, и включаем эту настройку:

Изображение

Жмем на ОК и закрываем все окна. На предложение о сохранении консоли отвечаем по желанию да или нет. В любом случае можно будет создать такую консоль заново.

7. Теперь идем в Start >> Run >> cmd и в открывшемся окне пишем команду gpupdate /force:

Изображение

Это нужно для того, чтобы созданные нами настройки возымели действие немедленно. Ну и наконец пришло время протестировать как все это работает. Делаем Log off или рестарт и наблюдам за происходящим процессом.

Я в этой статье рассказал как можно использовать простой скрипт для резервного копирования файлов, папки Favorites, очистить папку Temp и как автоматизировать этот процесс. Прошу обратить внимание, что при написании скрипта, имена папок и буквы логических дисков Вы должны использовать в соответствие тому, как они называются на Вашем компютере. У кого возникнут дополнительные вопросы по статье, задам их здесь, в топике.
Удачи в Ваших начианиях!!
Homo hominis lupus est. Ipso factum!
Аватара пользователя
BigWig
Модератор
Сообщения: 5807
Зарегистрирован: 19.02.2006, 20:24
smartphone: LG G2
Откуда: от тель-авивского верблюда

Участник покетовки

Сообщение BigWig »

igor7
Спасибо за статью!

Мне кажется, что такую опреацию, как создание резервных копий следует поручить "Task Scheduler".
Во-первых, потому, что операция backup может занять долгое время. Для Favorites это пустяки, но другие юзеры могут повесить более тяжелую операцию, в связи с чем выход из системы может затянуться на длительное время, что как минимум будет раздражать.
Во-вторых, у многих, в частности у меня :D, компьютер работает все время. В этом случае резервное копирование данных не будет выполняться вообще.
Task Scheduler хорош еще тем, что даже если в назначенное для некой операции время компьютер был выключен, то опреация будет выполняться как только компьютер будет снова в рабочем состоянии.
Аватара пользователя
doc
Пользователь
Сообщения: 10148
Зарегистрирован: 29.08.2005, 20:38
smartphone: iPhone 5с
Откуда: Rehovot

Участник покетовки

Даритель

Сообщение doc »

Не знаю, буду ли я этим пользоваться, но прочитал с огромным интересом
"Если не ты за себя, то кто же? Но если ты
только для себя, то зачем ты?"
Аватара пользователя
igor7
Пользователь
Сообщения: 3182
Зарегистрирован: 13.01.2007, 11:43
smartphone: HTC ONE
Откуда: Israel

Даритель

Сообщение igor7 »

Мне кажется, что такую опреацию, как создание резервных копий следует поручить "Task Scheduler".
Целиком поддерживаю! Поэтому я и писал:
Конечно же все что описывалось выше это хорошо, но я не думаю, что резервное копирование всего диска с помощью Batch scripting - это хорошая идея...
Целью статьи было ознакомление с понятием Batch scripting с помощью приведенных примеров. А также заодно знакомство с новой фишкой Windows Vista ,- multiple local group policies. И как пример использования - автоматизазия резервного копирования файлов (содержимого папки Favorites). Я думаю, что резервное копирование файлов какого-ибудь логического диска не кому не прийдет в голову запускать с помощью скрипта в процессе logoff...
Homo hominis lupus est. Ipso factum!
Аватара пользователя
BigWig
Модератор
Сообщения: 5807
Зарегистрирован: 19.02.2006, 20:24
smartphone: LG G2
Откуда: от тель-авивского верблюда

Участник покетовки

Сообщение BigWig »

igor7 писал(а):Я думаю, что резервное копирование файлов какого-ибудь логического диска не кому не прийдет в голову запускать с помощью скрипта в процессе logoff
Как знать! :mrgreen:

Мне кажется тема для новой статьи "Что мы можем повесить на "Task Scheduler" :mrgreen: будет как раз впору.

Сюда можно добавить дефрагментирование дисков, создание резервных копий, перенос их на другой комп в локальной сети (так сказать перекрестное хранение backup'ов), поддержку лог-файлов, автоматический прожиг болванок с backup'ами и другие рутинные операции.
uploader
Пользователь
Сообщения: 2789
Зарегистрирован: 30.06.2007, 23:09
smartphone: IPAQ 214+GPS Solar

Сообщение uploader »

igor7
BigWig
обьясните, у меня Виста с прогами занимает 17 Гиго, при резервном копировании файлов, как описал Игорь, мне надо еще выделить 17 Гиго :?: :cry:
Аватара пользователя
igor7
Пользователь
Сообщения: 3182
Зарегистрирован: 13.01.2007, 11:43
smartphone: HTC ONE
Откуда: Israel

Даритель

Сообщение igor7 »

111oleg
Ты же не всерьез спашиваешь, правда?
BigWig писал(а):Как знать! :mrgreen:
Неужели ты оказался прав?

Добавлено спустя 1 минуту 39 секунд:
BigWig
По поводу следующей статьи,- уже есть задумка. И в свете возникающих вопросов, нужно написать ее как можно быстрее...
Homo hominis lupus est. Ipso factum!
Аватара пользователя
BigWig
Модератор
Сообщения: 5807
Зарегистрирован: 19.02.2006, 20:24
smartphone: LG G2
Откуда: от тель-авивского верблюда

Участник покетовки

Сообщение BigWig »

111oleg
Как правило программы, которые делают резервное архивирование сжимают данные и из 17 гиг получится 8-10, но в любом случае тебе надо побеспокоиться о достаточном свободном месте. Лучше всего использовать для этих целей другой компьютер или другой диск. Ведь если у тебя полетит диск, то какого проку с того, что на нем находился backup!? :mrgreen:
uploader
Пользователь
Сообщения: 2789
Зарегистрирован: 30.06.2007, 23:09
smartphone: IPAQ 214+GPS Solar

Сообщение uploader »

igor7
просто я никогда не пользовался бэкапом, по этому спросил. Просто раз в 6-8 мес.\зависит от кол-во прог и игр поставленых и стертых за это время\ переставлял винду с нуля. Заинтересовался твоей статьей как зделать бэкап автоматом. После ответа уважаемого BigWig, понял, что
бэкап не для меня \жалко дисковое пространство\, думаю что от всех накопленых багов в регистрах он не спасет, комп после этого работать быстрее не будет, да и всегда есть возможность поставить что то новое \ ОС может окажется лучше, чем была\
Аватара пользователя
BigWig
Модератор
Сообщения: 5807
Зарегистрирован: 19.02.2006, 20:24
smartphone: LG G2
Откуда: от тель-авивского верблюда

Участник покетовки

Сообщение BigWig »

111oleg
Переустанавливать все время винду тоже не выход. Вот как делаю я:
один раз я установил windows со всеми патчами, установил Офис и другие базовае программы, сделал резервную копию (например с помощью Norton Ghost или Acronis True Image) и прожег его на болванки DVD (эти программы позволяют это делать). Как правило достаточно 2-3 болванки.
Теперь если что случилось с системой ты всегда ее можешь вернуть в первоначальное стабильное положение.
Упомянутые программы вместе данными записывают на болванки в специальные сектора свой код, который позволяет восстановить резервную копиб без всякой вспомогательной программы, только вставить диск в привод и перезапустить компьютер.

Это один из возможных путей, пусть он не вполне идеален, но самое главное - вся информация находится на DVD дисках и не зависит от надежности хард-дисков.
uploader
Пользователь
Сообщения: 2789
Зарегистрирован: 30.06.2007, 23:09
smartphone: IPAQ 214+GPS Solar

Сообщение uploader »

BigWig
как я понял, что после бэкапа все накопившееся баги и хвосты старых прог исчезнут и опять будет новая винда со всеми дровами и базовыми прогами и винда будет летать как новая.
Аватара пользователя
igor7
Пользователь
Сообщения: 3182
Зарегистрирован: 13.01.2007, 11:43
smartphone: HTC ONE
Откуда: Israel

Даритель

Сообщение igor7 »

111oleg
Ты по-моему путаешь две разные вещи. Резервное копирование файлов это одно, а восстновление системы из заранее приготовленного имиджа,- это совсем другое.
То, о чем говорит BigWig просто избавляет тебя от необходимости после переустановления ОС ставить и настраивать все необходимое тебе програмное обеспечение.
Ты должен один раз установить все с нуля, включая игры, нужные тебе программы и т.д., а затем воспользоваться, как говорил BigWig, Norton Ghost или Acronis True Image для создания имиджа твоей системы. После этого, ты всегда сможешь восстановить всю свою систему в первозданном виде. Причем восстановление обычно занимает гораздо меньше времени, чем установка ОС и всего необходимого на компютер по новому. Резервное копирование файлов,- это то о чем я рассказывал в статье, а именно копирование содержимого папки Favorites на другой диск.
Homo hominis lupus est. Ipso factum!
Ответить

Вернуться в «Windows Vista»