Написание bat файлов — примеры батников | – IT-блог для начинающих

Написание bat файлов — примеры батников | – it-блог для начинающих

В данной статейки мы рассмотрим такую полезную вещь как «батник». Давайте сначала дадим определение, что такое bat файл. Пакетные или batch файлы — это простые текстовые файлы, содержащие наборы команд (инструкцию) интерпретатора и имеющие расширение bat или cmd (cmd работают только в ОС семейства NT). Создавать и редактировать такие файлы можно при помощи обычного блокнота или любого другого текстового редактора.

Теперь Вы спросите, зачем нужно уметь писать такие бат файлы? И зачем они нужны? Попытаюсь объяснить.

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

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

Теперь перейдем непосредственно к основам этих батников. Как же они создаются, Вам нужно просто создать простой текстовый документ открыть его и сразу на вкладке «Файл->сохранить как», вписать вместо расширения «Текстовый документ.txt», например «Текстовый документ.bat» и сохранить, вот и получится у нас батник с расширением .bat, но он пока ничего не делает.

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

 
 "C:Program FilesWinRARwinrar.exe" a -r -dh -ed -agYYYY-mm-dd E:arhaccounts d:accounts*.doc
 "C:Program FilesWinRARwinrar.exe" a -r -dh -ed -agYYYY-mm-dd E:arhaccounts d:accounts*.xls
 "C:Program FilesWinRARwinrar.exe" a -r -dh -ed -agYYYY-mm-dd E:arhaccounts d:accounts*.txt

Теперь немного расскажу, что делает этот батник. Запускается WinRar, потом идут команды винрара:

  • a — это добавить в архив;
  • -r — обрабатывать вложенные папки;
  • -dh — открывать совместно используемые файлы;
  • -ed — не добавлять пустые папки;
  • YYYY-mm-dd — добавляем к имени архива текущую дату (формат даты);
  • E:arhaccounts — путь, где будет лежать конечный архив;
  • d:accounts*.doc — путь и маска файлов, какие нужно заархивировать.

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

 
 copy E:arhaccounts*.rar \namecomparhiv

Теперь рассмотрим основные команды, которые Вы можете использовать.

Курс по SQL для начинающих

Если Вам нужно удалить файл пропишите следующие:

 
 Del d:filetest.doc

Для того чтобы удалить весь каталог пропишите:

 
 rd d:file

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

 
 echo Y| del d:file

где,

Сейчас давайте рассмотрим пример посложней, в котором уже выполняется условие:

 
 @echo off
 "C:Program FilesWinRARwinrar.exe" x -O  -IBCK d:testtest.rar d:test 
 IF not EXIST d:test123.rar GOTO 1
 IF EXIST d:test123.rar GOTO 2
 :2
 "C:Program FilesWinRARwinrar.exe" x -O  -IBCK  d:test123.rar c: 
 del d:test123.rar 
 :1   
 del d:testtest.rar
 end

Теперь объясняю, допустим, Вам нужно разархивировать архив test.rar, в котором будет много файлов, но если там окажется файл 123.rar его нужно будет разархивировать в корень диска C, а остальные файлы чтобы остались в том же каталоге не тронутыми.

По порядку, команда @echo off нужна, для того чтобы на экране у нас ничего не отражалось (в принципе, если не нужно можете не писать эту строку). Далее у нас запускается винрар и распаковывает архив test.rar в папку test. Затем идет условие, если в папке test (после распаковки test.rar) у нас не окажется файла 123.rar, то у нас просто выполнение батника переходит к строке :1 и потом просто удаляется файл test.rar за не надобностью т.к. все что нам нужно мы уже распаковали. Но если там оказывается файл 123.rar, то выполнение батника переходит к строке :2, после которой уже идет распаковка файла 123.rar в корень диска C. Другими словами у нас выполняется условие, если есть файл то делать это, если нет файла, делать вот это. Допустим, если не прописать условие в данном примере, то у нас батник выдаст ошибку, тогда когда у нас не окажется файла 123.rar в данной папке.

А сейчас рассмотрим такой пример, допустим, Вам нужно каждый раз перемещать из каталога расположенного на диске D файлы на флешку. Вы каждый раз должны будете заходить мой компьютер диск D, выбирать нужную папку, выделять все файлы из нее и вырезать, а потом только заходить на флешку и вставлять. С помощью батника это делается в один клик (с одним условием, что флешка каждый раз будет, например диском G или тем какой у Вас). Вот пример такого батника:

 
 move "D:catalog*.doc" G:catalognaflehe

И все файлы с расширением doc, которые находятся в каталоге D:catalog будут перемещаться на флешку. Теперь хочу сказать, что в батниках можно использовать сценарии (скрипты) при помощи Windows Scripting Host и если нужно, например чтобы выводилось сообщение, после того как файлы скопированы (предыдущий пример) вставьте вот это:

 
 echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%mes.js
 echo WSHShell.Popup("Файлы Скопированы"); >> %temp%mes.js
 start %temp%mes.js
 deltree /y %temp%mes.js



На самом деле про написание батников можно разговаривать много и в одну статью это, конечно же, не уместить, здесь я показал всего лишь принципы, которые используются при написании bat файлов, так сказать основу. Если Вы хотите узнать больше команд для написания батников, Вы можете легко посмотреть их, набрав в командной строке (Пуск — Выполнить – cmd) команду help, но там, конечно же, не все команды, что можно использовать в батниках. Удачи в написание BAT файлов (батников).

Продолжение темы в статье — BAT файлы – Примеры батников (Часть 2)

Выполнение каких либо действий в заданный интервал времени.

Речь пойдет не о запуске командного файла в определенное время, а
о выполнении какой-то его части только в определенный интервал времени,
например, с 10:00 до 12:00. Решения данной задачи потребует сравнения
текущего времени с указанным промежутком.

Для примера, создадим командный
файл, выполняющий запуск стандартного калькулятора Windows , только в том
случае, если он выполняется в интервале времени от 10:00 до 12:00. Необходимо
получить текущее время и выполнить проверку того, что оно не больше 12:00 и
не меньше 10:00 .Команда IF позволяет выполнить сравнение строк
при использовании формата:

IF /I строка1 оператор_сравнения строка2 команда

где оператор_сравнения принимает следующие значения:

EQU – равно

NEQ – не равно

LSS – меньше

LEQ – меньше или равно

GTR – больше

GEQ – больше или равно

а ключ /I, если он указан, задает сравнение текстовых строк без учета
регистра. Этот обычно используется для сравнения текстовых строк в
форме строка1==строка2. Сравнения проводятся по общему типу данных,
так что если строки 1 и 2 содержат только цифры, то обе строки преобразуются в
числа, после чего выполняется их сравнение.


REM Время меньше 12:00 – перейти на анализ второго условия, иначе – выход

if %time:~0,2% lss 12 goto tst2

exit

:tst2

Rem Время больше 10:00 – перейти к выполнению, меньше – завершить командный файл выполнив exit

if %time:~0,2% gtr 10 goto excalc

exit

:excalc

calc.exe

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

Выполнение команд по расписанию.

В операционных системах WINDOWS XP и старше существует утилита командной
строки AT.EXE, позволяющая управлять задачами для
планировщика заданий Windows, и таким образом, выполнить команду или
пакетный файл в указанное время на локальном или удаленном компьютере.

В операционных системах Windows 7 и старше, утилита at.exe присутствует, но признана устаревшей и нерекомендуемой к использованию в будущем.
Вместо нее рекомендуется использовать schtasks.exe, которая обладает большими возможностями, но сложнее в использовании.

Примеры использования современной утилиты имеются в разделе со списком команд, а на данной странице, все же воспользуемся простой классической AT.
Команда AT предназначена для запуска команд и программ в указанное время
по определенным дням.

:/>  Как исправить проблемы Svchost.exe (netsvcs) в Windows 10

Примеры команды AT [\имя_компьютера] [ [код] [/DELETE] | /DELETE [/YES]] AT [\имя_компьютера] время [/INTERACTIVE] [ /EVERY:день[,…] | /NEXT:день[,…]] “команда”

\имя_компьютера – имя удаленного компьютера. Если этот параметр
опущен, задача относится к локальному компьютеру. код – порядковый номер запланированной задачи.
Указывается если нужно отменить уже запланированную задачу с помощью
ключа /delete. /delete – отменить запланированную задачу.

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

Задачи, запущенные без этого ключа невидимы для
пользователя компьютера./every:день[,…] Запуск задачи осуществляется по указанным дням недели или
месяца. Если дата опущена, используется текущий деньмесяца./next:день[,…

Примеры использования:

Вычисления

В bat-файлах можно выполнять простые арифметические операции с целыми 32-битными числами и битами с помощью команды set /a. Максимальным поддерживаемым числом является 2^31-1 = 2147483647, а минимальным – -(2^31) = -2147483648. Синтаксис напоминает язык программирования Си.

Операторы с двоичными числами интерпретируют число как 32-битную последовательность. К ним относятся: ~ (побитовое НЕ или дополнение), & (И), | (ИЛИ), ^ (исключающее ИЛИ), << (сдвиг влево), >> (сдвиг вправо). Логическим оператором отрицания является ! (восклицательный знак).

Он изменяет 0 в 1 и ненулевое значение в 0. Оператором комбинирования служит , (запятая), которая позволяет производить большее число операций в одной команде set. Комбинированные операторы присваивания = и -= в выражениях a =b и a-=и соответствуют выражениям a=a b и a=a-b. Так же работают и *=, %=, /=, &=, |=, ^=, >>=, <<=. Приоритет операторов следующий:

(); % -*/; >>, <<; &; ^; |; =, %=, *=, /=, =, -=, &=, ^=, |=, <<=, >>=; ,

Литералы можно вводить в виде десятичных, шестнадцатеричных (с ведущими 0x) и восьмеричных чисел (с ведущим нулем). Например, set /a n1=0xffff присваивает n1 шестнадцатеричное значение.

Запуск батников от имени администратора

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

Самый очевидный и простой способ запустить BAT-файл через командную сроку от имени администратора – кликнуть по имени этого файла ПКМ и выбрать из контекстного меню соответствующий пункт. Недостаток этого метода очевиден – эту процедуру придётся повторять каждый раз при запуске скрипта.

Но процесс можно автоматизировать – нужно создать для батника ярлык, в свойствах которого нажать кнопку «Дополнительно» и поставить галочку напротив фразы «Запуск от имени администратора». При этом пиктограмму для ярлыка можно выбрать по своему усмотрению, что полезно, если таких батников у вас много.

Изменение даты и времени файлов или папок.

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

Не секрет, что командные оболочки Unix/Linux значительно превосходит по своим возможностям командную строку Windows, поэтому, вполне понятно появление пакета UNIX Shell and Utilities для Windows NT и старше. Этот пакет представляет собой Windows-версии наиболее популярных утилит из среды Unix/Linux , которые могут выполняться как консольные команды в среде оболочки пользователя (в среде модуля sh.exe, входящего в пакет) или как исполняемые файлы в командной строке Windows.

Использование длинных имён в bat-файлах

Многие пользователи при практическом рассмотрении вопроса, как создать батник, в том числе с расширением CMD, сталкиваются с проблемой длинных имён, которые доступны в ОС Windows. Интерпретатор командной строки в этом отношении остался закоренелым ретроградом – он понимает имена файлов и каталогов в формате DOS, то есть длиной не более 8 символов. Как же решается подобная дилемма?

Один из наиболее известных способов – сокращение имени до 6 символов (исключая пробелы) и присвоение остатку окончания, состоящего из символа «тильда» (~) и цифры 1. Например, стандартное имя каталога Program Files будет выглядеть как Progra~1, папка Sound Blaster получит имя SoundB~1.

Казалось бы, вполне изящное решение. Но не во всех случаях. Скажем, у вас имеется несколько папок, начинающихся с одного имени. Типичный пример – установка в том же Program Files нескольких программных продуктов от компании Mozilla – в этом случае сокращённым именем будет Mozill, и если всем присвоить остаток ~1, то это будет неправильно.

Проблема в том, что если один из продуктов удалить, например, Firefox, оставшиеся две записи окажутся неработоспособными. Удалив Thunderbird, вы сделаете недоступным Sunbird. Наконец, такой способ позволяет дать имена лишь девяти файлам/папкам с одинаковым начальным именем. Так что подобный способ удовлетворительным назвать никак нельзя.

Второе решение – заключать длинные имена и пути в кавычки.

Использование переменных в командных файлах.

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

Значения, принимаемые этими переменными формируются при
загрузке Windows, регистрации пользователя в системе, старте или завершении
некоторых приложений, и, кроме того, могут быть заданы с помощью специальной
команды
SET

SET переменная=строка

переменная – имя переменной среды. строка – строка символов, присваиваемая указанной
переменной.

Например, командная строка SET myname=Vasyaсоздает переменную myname, принимающую значение Vasya.

Кавычки в пакетных файлах

Если вы думаете, что знаете всё про то, как сделать BAT-файл, то, скорее всего ошибаетесь. Допустим, вам нужно указать один из параметров команды в кавычках. Сами кавычки синтаксисом не запрещены, но всегда нужно учитывать правила написания конкретной команды. Пускай нам нужно запустить экзешник scw.exe. Соответствующая команда, по идее, должна иметь вид

start "C:Program FilesSoundClubscw.exe"

Но это будет воспринято интерпретатором неправильно, поскольку в синтаксисе команды START на первом месте – необязательный параметр [«заголовок»], и только затем следует путь. Поэтому, чтобы командный интерпретатор не запутался, первый параметр обязательно указываем, даже если он не нужен – просто оставляем его пустым.

Тогда наша команда преобразится:

start "" "C:Program FilesSoundClubscw.exe"

Правильным также будет заключение в скобки всех наименований папок/файлов с пробелами внутри. Но встречаются ситуации, когда оба варианта не сработают. В таких случаях можно посоветовать посредством команды cd перейти в нужный каталог и работать уже в целевом. В нашем случае батник будет иметь вид:

%SystemDrive% cd Program FilesSoundClub start scw.exe

Этот метод более трудоёмкий, но он гарантированно рабочий.

Как видим, создание, написание BAT-файлов даже для таких простых задач, как запуск программ в Windows, является по большому счёту искусством.

Определение доступности ip-адреса

Для проверки доступности сетевого узла чаще всего используется упоминаемая выше стандартная утилита ping.exe. Утилита выполняет отправку ICMP-пакета на проверяемый узел (эхо-запрос) и ожидает ответный пакет (эхо-ответ). К сожалению, результат проверки доступности узла не в полной мере коррелируется со значением переменной ERRORLEVEL и может быть получен только из данных стандартного вывода ping.

В разных версия ОС Windows, утилита ping.exe может устанавливать нулевое значение ERRORLEVEL даже при недоступности узла, но при наличии в командной строке верных параметров командной строки. Иными словами, в некоторых случаях, требуемый сценарием результат выполнения определенной команды трудно, или вообще нельзя определить по значению переменной ERRORLEVEL, и приходится анализировать более достоверные признаки успешного или неуспешного выполнения команды, например, наличие определенного текста в ее выводимых сообщениях.

Если внимательно посмотреть на сообщения программы ping.exe при опросе доступного и недоступного узла, то можно заметить, что они значительно отличаются :ping 456.0.0.1 – ping на несуществующий адрес

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


При проверке связи не удалось обнаружить узел 456.0.0.1. Проверьте имя узла и повторите попытку.

Определение текущей версии windows.

Так же, как и в предыдущем примере, для определения версии операционной системы в процессе выполнения командного файла, можно воспользоваться поиском определенных фрагментов текста в результатах выполнения команд, отображающих сведения о системе. Например, во всех операционных системах семейства Windows ( и даже в DOS ) существует специальная команда VER, предназначенная для отображения сведений о версии ОС. В результате выполнения команды, например, в среде Windows XP, отображается текст:

:/>  Анимация запуска windows 7

Microsoft Windows XP [Версия 5.1.2600]

В среде Windows 7, текст отличается:

Microsoft Windows [Version 6.1.7600]

В среде Windows 10:

Microsoft Windows [Version 10.0.14393]

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

Остановка и запуск системных служб.

Для остановки и запуска служб из
командной строки, в любой версии Windows, можно воспользоваться командой NET.EXE

NET.EXE STOP < имя службы >

NET.EXE START < имя службы >

В качестве параметра команды можно использование как короткое, так и полное имя службы
(“Dnscache” – короткое, “DNS-клиент” – полное имя службы).
Имя службы, содержащее пробелы заключается в двойные кавычки.
Пример перезапуска службы “DNS-клиент”

net stop “DNS-клиент”

net start “DNS-клиент”


То же, с использованием короткого имени:

net stop Dnscache

net start Dnscache

Первые шаги

Для написания достаточно иметь права в системе, позволяющие создавать и сохранять файлы. Что касается запуска готовых скриптов, для их выполнения необходимо установить разрешение для определенного пользователя и самой операционной системы. Второй случай подразумевает то, что в ОС иногда накладывается блокировка на «батники», поскольку исполняемые файлы часто представляют собой вредоносное ПО.

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

  • Заходим в «Панель управления»;
  • Выбираем раздел «Параметры Проводника»;
  • В открывшемся окне заходим на вкладку «Вид»;
  • Прокручиваем вниз, пока не найдем строку «Скрывать расширения для зарегистрированных типов файлов»;
  • Если там есть галочка, убираем и жмем «ОК».

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

Переходы и метки.

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

Условия таковы – есть 2 съемных диска, один из которых должен быть виден в проводнике как диск X: а второй – как диск Y: независимо от того, в какой
порт USB они подключены и какие буквы присвоены им операционной системой.
Для примера, будем считать, что реальные диски могут быть подключены как F: или G:

Flashd1.let – на первом диске

Flashd2.let – на втором

Таким образом, задача командного файла заключается в том, чтобы проверить
наличие на сменных дисках F: и G: файлов Flashd1.let
или Flashd2.let и, в зависимости от того, какой из них присутствует,
присвоить диску букву X: или Y:

Для поиска файла на диске воспользуемся командой IF EXIST:

IF EXIST имя_файла команда

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

SUBST X: C: – – создать виртуальный диск
X:, содержимым которого будет корневой каталог диска C:

   
Для решения поставленной задачи, создаем командный файл, например с именем setletter.bat, следующего содержания:

Поиск в локальной сети включенных компьютеров.

В данном примере речь идет о создании командного файла, позволяющего “собрать” список IP-адресов узлов локальной сети, включенных на данный момент времени. Ничего принципиально нового в плане создания командных файлов здесь нет, но тем не менее, задача поиска включенных узлов в локальной сети встречается довольно часто, и решить ее описанными выше способами, с использованием ping.exe и net view удается далеко не всегда, поскольку в современных версиях операционных систем семейства Windows настройки брандмауэров по умолчанию, задают довольно жесткие правила, блокирующие сетевые соединения извне, и ответы на эхо-запрос.

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

При любой передаче пакетов IP-протокола с данного компьютера на IP-адрес другого сетевого устройства в локальной сети, программные средства сетевых протоколов выполняют процедуру определения физического адреса сетевого адаптера получателя ( MAC-адрес получателя).

Всем сетевым устройствам отправляется специальный широковещательный запрос ( запрос который будет принят всеми компьютерами данной подсети), означающий “чей MAC – адрес соответствует такому-то IP-адресу”. Если какое-либо сетевое устройство опознало свой собственный IP-адрес, оно отправит ARP-ответ, содержащий соответствующий MAC-адрес, который будет сохранен в специальной таблице соответствия адресов IP и MAC, хранящейся в оперативной памяти компьютера, отправившего ARP-запрос.

Запись информации в данную таблицу выполняется только при необходимости передачи любых данных по протоколу IP, что можно инициировать, например, пингованием опрашиваемого устройства. Даже если настройками брандмауэра полностью закрыты все соединения извне и блокируется протокол ICMP ( устройство не «пингуется» ) , в буферной памяти сервиса
ARP будет присутствовать запись соответствия IP и MAC, если устройство было подключено к локальной сети и участвовало в процедуре разрешения адреса .

Для просмотра содержимого ARP-кэш можно воспользоваться командой

arp -a – отобразить все записи в таблице ARP

Пример отображения таблицы ARP:

Интерфейс: 192.168.0.29 — 0xa

адрес в Интернете Физический адрес Тип

192.168.0.1 00-1e-13-d6-80-00 динамический

192.168.0.3 60-eb-69-08-18-d2 динамический

. . .

Интерфейс: 192.168.234.1 — 0xf

адрес в Интернете Физический адрес Тип

192.168.234.255 ff-ff-ff-ff-ff-ff статический

224.0.0.22 01-00-5e-00-00-16 статический

224.0.0.252 01-00-5e-00-00-fc статический

239.255.255.250 01-00-5e-7f-ff-fa статический

Как видно из приведенной таблицы, например IP – адресу 192.168.0.1 соответствует физический адрес сетевого адаптера, равный 00-1e-13-d6-80-00 . Если же сетевой адаптер с данным адресом будет недоступен, то такой записи в таблице не будет.

Для понимания алгоритма опроса сети необходимо учесть следующее:

Разрешение адресов ARP используется только при передаче данных по IP-протоколу в пределах сегмента локальной сети, задаваемого маской. Так, например, для примера с IP адресом 192.168.0.1 и маски 255.255.255.0 это будет диапазон IP от 192.168.0.1 до 192.168.0.254.

Поиск компьютеров с запущенным приложением

В операционных системах Windows XP и старше имеется стандартная утилита для получения списка процессов, выполняющихся в системе tasklist.exe. Она обладает очень неплохими возможностями и может использоваться для поиска выполняющихся приложений как на локальном, так и удаленном компьютере.

Также, можно воспользоваться вспомогательной утилитой PSList.exe из пакета PSTools от Microsoft Sysinternals. Обе утилиты можно использовать для поиска
приложений, выполняющихся на локальном или удаленном компьютере, но PSlist имеет более простой функционал, менее известна среди компьютерных специалистов и выбрана в качестве средства решения поставленной задачи.

Поиск компьютеров с запущенным приложением по списку

В предыдущем примере использовался прямой перебор IP-адресов компьютеров в
локальной сети, что не всегда эффективно, поскольку в процедуру опроса могут быть
вовлечены и выключенные компьютеры. Решим задачу другим способом – создадим текстовый
файл со списком компьютеров и опросим их по этому списку.

Список можно получить из сетевого окружения с использованием команды:
net.exe view > comps.txt
После выполнения такой команды файл
comps.txt
будет содержать список
следующего вида:

Имя сервера                 Заметки< 2 пустых строки >——-\AB1\AB2\ALEX\BUHCOMP\PC2\SA\SERVERКоманда выполнена успешно.

   
Обрабатывать содержимое этого текстового файла будем с помощью команды
FOR
с ключом /F:

FOR /F [“ключи”] %переменная IN (имя файла) DO команда [параметры]

Данная команда позволяет получить доступ к строкам в текстовом файле с использованием ключей:skip=n                 – пропустить n строк от начала файла (в нашем примере – 4 строки)eol=< символ >  – не использовать строки, начинающиеся с заданного символа.
(в нашем случае – пропустить последнюю строку, начинающуюся с кириллического символа “К” – “Команда выполнена успешно”tokens=n             – брать для обработки n-е слово в строке (в нашем случае – 1-е слово)

:/>  Msconfig - всё, что вам нужно знать про утилиту конфигурации.

Окончательный вид команды:

Примеры использования утилиты touch.exe в командной строке windows:

touch C:foldermyfile.txt – изменить время доступа и модификации файла C:foldermyfile.txt на текущее. Если файл не существует, он будет создан с нулевой длиной и текущим временем создания, модификации и доступа.touch C:folder – изменить время доступа и модификации папки C:folder на текущее.touch -f C:ntldr C:folder – изменить время доступа и модификации папки C:folder на время, установленное для файла C:ntldrtouch -t 199803080102.00 C:folder – установить для существующей папки “C:folder” значение даты и времени модификации – 1998г.

, 8 марта, 1 час : 2 минуты :00 секундtouch -t 1112.30 C:folder – установить для существующей папки “C:folder” значение даты и времени модификации – текущая дата, 11 час : 12 минут :30 секунд touch -a -t 2222.20 C:folder – изменить только время доступа, время модификации не изменяется.

Примеры командных файлов.

Использование утилит командной строки и командных файлов нередко позволяют
решить многие проблемы связанные с повседневной эксплуатацией компьютерной
техники. Большинство системных администраторов и грамотных пользователей
продолжают ими пользоваться, несмотря на то, что в Windows проявилось новое,
более мощное и современное средство управления системой – WMI
(Windows Management Instrumentation) и многофункциональная оболочка пользователя Power Shell.

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

Ниже приведены простые
примеры с комментариями, которые демонстрируют некоторые возможности и
способы применения .cmd и .bat

Присвоение съемному диску одной и той же буквы.

Задача заключается в том, чтобы съемный USB диск (флэш диск) был доступен
всегда под одной и той же буквой, независимо от того, на каком компьютере он
используется и каким образом он был подключен. Для ее решения воспользуемся уже упоминаемой выше командой SUBST, но реализуем присвоение новой буквы диску с
помощью подстановочного значения переменной %0, создаваемой
системой при каждом запуске командного файла.

Выберем для съемного диска желаемую букву, например – X.

Некоторые из переменных окружения, в том числе и переменная %0,
принимающая значение пути и имени выполняющегося командного файла, позволяют
при определенной модификации с использованием специального признака –
символа ” ~ “, получить ее частичное значение (расширение переменной).

Работа с дисками, файлами и каталогами.

Задача – определить буквы дисков, присутствующих в системе и записать результат в файл с
именем tstdsk.txt текущего каталога. Можно воспользоваться выполнением команды IF EXIST в цикле FOR для набора из букв латинского алфавита, т.е
для каждой буквы диска проверить наличие корневого каталога командой

IF EXIST буква диска:

Сначала создаем пустой файл:

copy nul tstdsk.txt

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

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

Скрытый запуск батника

Поскольку выполнение скрипта требует запуска интерпретатора командной строки, при запуске BAT-файлов на экране всегда мелькает чёрное окно консоли. Некоторых оно раздражает, некоторых – пугает. Можно ли запускать пакетные файлы в скрытом режиме? Оказывается, да, причём разными способами.

Простейший метод заключается в создании ярлыка на пакетник, в свойствах которого во вкладке «Окно» указываем опцию «Свёрнутое в значок». В результате запуска такого скрипта рабочий стол будет оставаться девственно чистым, единственным напоминанием о наших действиях будет появление пиктограммы CMD в области панели задач.

Если вас и такой вариант не устраивает, можно использовать так называемый «костыль» – специальный скрипт VBS, запускающий BAT-файл в скрытом режиме.

Содержимое такого скрипта, который нужно сохранить под именем hidden.vbs:

Создание архива, имя которого содержит дату и время.

Решим следующую задачу – нужно создать архив файлов, находящихся в каталоге
C:Program FilesFAR. Имя архивного файла должно состоять из текущего времени
(часы.минуты.секунды – ЧЧ.ММ.СС.rar), и помещен он должен в новый каталог, имя которого должно состоять из текущей даты
(день.месяц.год – ДД.ММ.ГГГГ). Для архивирования будем использовать архиватор RAR.
Формат запуска для создания архива:

RAR a -r < путь и имя архива > < Путь и имя архивируемых данных >

a – команда создания архива.-r – ключ, определяющий архивирование подкаталогов (т.к. в исходной папке есть подкаталоги).

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

Способ 1: блокнот

Через классическое приложение «Блокнот» можно без труда создать и наполнить BAT необходимым набором команд.

Вариант 1: Запуск Блокнота

Этот вариант самый распространенный, поэтому рассмотрим его первым.

  1. Через «Пуск» запустите встроенный в Windows «Блокнот».
  2. Запуск приложения Блокнот через Пуск в Windows 10

  3. Впишите нужные строчки, проверив их корректность.
  4. Процесс создания BAT-файла через Блокнот в Windows 10

  5. Нажмите на «Файл» > «Сохранить как».
  6. Сохранение BAT-файла через Блокнот в Windows 10

  7. Сперва выберите директорию, где будет храниться файл, в поле «Имя файла» вместо звездочки впишите подходящее название, а расширение, идущее после точки, измените с .txt на .bat. В поле «Тип файла» выберите вариант «Все файлы» и нажмите «Сохранить».
  8. Параметры сохранения BAT-файла в Windows 10

  9. Если в тексте есть русские буквы, кодировка при создании файла должна быть «ANSI». Иначе вместо них в Командной строке вы получите нечитаемый текст.
  10. Выбор кодировки при сохранении BAT-файла в Windows 10

  11. Батник можно запустить как обычный файл. Если в содержании нет команд, взаимодействующих с пользователем, Командная строка отобразится на секунду. В противном случае запустится ее окно с вопросами или другими действиями, требующими ответа от юзера.
  12. Пример созданного BAT-файла в Windows 10

Вариант 2: Контекстное меню

  1. Вы также можете сразу открыть директорию, куда планируете сохранить файл, нажать по пустому месту правой кнопкой мыши, навести на «Создать» и из перечня выбрать «Текстовый документ».
  2. Создание текстового документа через контекстное меню в Windows 10

  3. Задайте ему желаемое имя и измените расширение, идущее после точки, с .txt на .bat.
  4. Переименование документа и его расширения в BAT в Windows 10

  5. В обязательном порядке появится предупреждение о смене расширения файла. Согласитесь с ним.
  6. Подтверждение изменения разрешения созданного текстового документа в Windows 10

  7. Кликните по файлу ПКМ и выберите «Изменить».
  8. Изменение BAT-файла через контекстное меню в Windows 10

  9. Файл откроется в Блокноте пустым, и там вы его сможете наполнить по своему усмотрению.
  10. Внесение изменений в созданный BAT-файл в Windows 10

  11. Закончив, через «Пуск» > «Сохранить» внесите все изменения. Для этой же цели можно использовать сочетание клавиш Ctrl S.
  12. Повторное сохранение BAT-файла в Windows 10

Если у вас на компьютере установлен Notepad , лучше воспользоваться им. Это приложение подсвечивает синтаксис, позволяя удобнее работать с созданием набора команд. На верхней панели есть возможность выбрать кодировку с поддержкой кириллицы («Кодировки» >

Способ 2: командная строка

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

  1. Откройте Командную строку любым удобным способом, например, через «Пуск», вписав в поиск ее название.
  2. Запуск cmd через Пуск в Windows 10

  3. Впишите команду copy con c:lumpics_ru.bat, где copy con — команда, которая создаст текстовый документ, c: — директория сохранения файла, lumpics_ru — имя файла, а .bat — расширение текстового документа.
  4. Создание BAT-файла через Командную строку в Windows 10

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

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

  6. Ввод команд для созданного BAT-файла через Командную строку в Windows 10

  7. Для сохранения файла используйте комбинацию клавиш Ctrl Z и нажмите Enter. Их нажатие отобразится в консоли так, как показано на скриншоте ниже — это нормально. В самом батнике эти два символа не появятся.
  8. Ввод команд для созданного BAT-файла через Командную строку в Windows 10

  9. Если все прошло успешно, вы увидите уведомление в Командной строке.
  10. Подтверждение сохранения созданного BAT-файла через Командную строку в Windows 10

  11. Для проверки корректности созданного файла запустите его, как любой другой исполняемый файл.
  12. Созданный BAT-файл через Командную строку в Windows 10

Не забывайте, что в любой момента можно редактировать батники, кликнув по ним правой кнопкой мыши и выбрав пункт «Изменить», а для сохранения нажать Ctrl S.

Оставьте комментарий