Как выполняются переходы в пакетном командном файле

Обновлено: 02.07.2024

Все команды и операторы языка являются регистронезависимыми, то есть, команды echo off, ECHO OFF и EcHo oFf являются абсолютно идентичными.

Перенаправление потоков ввода/вывода.

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

Основные команды и операторы пакетных файлов.

@<команда>
Оператор @. позволяет не выводить следующую за ним команду на экран. Это аналог оператора ECHO OFF только для одной строки. Часто используется следующим образом в начале многих пакетных файлов:
@ECHO OFF
Это позволяет не выводить и саму запрещающую строку ECHO OFF при выполнении пакетных файлов.

GOTO <метка>
Оператор GOTO осуществляет безусловный переход на метку внутри этого же файла. Метка обозначается следующим образом:
:label
то есть, со знаком двоеточия в начале. Для перехода к такой метке будет служить команда
GOTO label
в любом месте BAT-файла.

CALL <имя bat-файла>
Команда CALL позволяет вызвать один пакетный файл из другого, не прекращая выполнения предыдущего. Пример:
CALL ABC.BAT
То есть, при выполнении команды CALL выполнение текущего пакетного файла прекратится и управление будет передано пакетному файлу с именем ABC.BAT. При использовании команды CALL ABC.BAT, после завершения работы файла ABC.BAT управление будет возвращено на следующую после команды вызова строку.

PAUSE
Команда PAUSE приостанавливает выполнение пакетного файла и выдает на экран приглашение нажать на любую клавишу для продолжения работы. Бывает полезна для того, чтобы дать возможность пользователю прочитать многостраничный текст без использования фильтра MORE.

Используя сочетания этих символов можно изменить вид приглашения DOS по своему вкусу. Не забывайте ставить перед каждым из этих символьв знак доллара.
Если использовать какой-либо текст в строке команды PROMPT, он также будет выведен в соответствующие позиции.

Фильтры в командных файлах.

MORE [диск:][путь]имя_файла MORE < [диск:][путь]имя_файла имя_команды | MORE [диск:][путь][имя_файла]
Последовательный вывод данных по частям размером в один экран. Параметры:

SORT [/R] [/+n] [[диск1:][путь1]имя_файла1] [> [диск2:][путь2]имя_файла2] [команда |] SORT [/R] [/+n] [> [диск2:][путь2]имя_файла2]
Сортировка ввода с выводом результатов в файл, на экран или другое устройство.
Параметры:

Пример:
SORT /R < BOOK1 > REV
Сортирует файл BOOK1 в обратном порядке и записывает результат в файл REV.
Буквы нижнего регистра соответствуют буквам верхнего (a=A, z=Z).

Использование возвращаемых значений.

Основные команды разных версий DOS.

Справочные команды

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

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

Что такое командный файл?

Как создать пакетный файл

Вы пишете командные файлы в виде обычного текста. Вы можете использовать любой текстовый редактор, который вам нравится, но стандартное приложение «Блокнот» отлично справляется со своей задачей. Если вы создаете сложный пакетный файл, вам пригодятся дополнительные функции Notepad ++. Но пока вы можете придерживаться Блокнота, поскольку каждый приведенный ниже пример командного файла был протестирован с использованием этой программы.

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

Полезные командные файлы Windows для автоматизации

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

1. Откройте несколько программ с помощью командного файла.

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


В приведенном ниже примере я открываю браузер Google Chrome, документ Word, над которым я работаю, и VMware Player.

Откройте новый текстовый файл и введите:

Вы можете добавить в пакетный файл столько приложений и файлов, сколько хотите. Команды пакетного файла в этом файле:

  • @echo отображает команду, которая в данный момент выполняется в командной оболочке. Мы превратили это выключен.
  • CD меняет каталог.
  • Начало делает очевидное и запускает программу.

2. Удалите файлы старше определенного времени с помощью командного файла.

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

В первом примере в указанной папке удаляются файлы старше трех дней:

Во втором примере удаляются только файлы с расширением .docx старше трех дней:

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

3. Автоматизация резервного копирования системы с помощью пакетного файла.

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

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

Автоматизация резервного копирования пакетных файлов: метод №1


Откройте Блокнот и введите следующие команды:

Теперь отправляйтесь в Файл> Сохранить как, назовите файл systembackup.bat и завершите сохранение.

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

Автоматизация резервного копирования пакетных файлов: метод 2

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

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

Сначала укажите место, в которое вы хотите скопировать файлы, используя установить диск = X: Backup. В этом примере диск установлен на «X». Вы должны изменить эту букву на любую букву вашего внешнего резервного диска.

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

  • / с копирует системные файлы
  • / c выполняет команду, указанную в строке, затем завершает
  • / д позволяет изменять диски и каталоги
  • / e копирует пустые каталоги
  • /час копирует скрытые файлы
  • /я если место назначения не существует, и вы копируете более одного файла, / i предполагает, что местом назначения должен быть каталог
  • /р перезаписывает файлы только для чтения
  • / г подавляет запросы, подтверждающие, что вы хотите перезаписать файлы, доступные только для чтения

Теперь, если вы хотите добавить в пакетный файл дополнительные хранилища резервных копий, используйте следующую команду:

Пакетный файл включает несколько папок для копирования. Вы могли заметить, что папки составляют разные части вашего профиля пользователя Windows. Вы можете сделать резервную копию всей папки с помощью следующей команды, предполагая, что вы используете те же «установить диск» и «установить резервную команду».

Автоматизация резервного копирования пакетных файлов: метод №3

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

В новом текстовом файле введите следующие команды:

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

  • Робокопия / МИР: Вы уже попробовали robocopy. Дополнительные / мир Параметр гарантирует, что каждая папка и подпапка также копируются.
  • Завершение работы -s -t: Команда shutdown сообщает Windows, что вы хотите завершить работу, а -s подтверждает, что это полное выключение (а не перезапуск или переход в режим гибернации). В -t Параметр позволяет вам установить определенный промежуток времени до того, как система начнет процесс выключения, определяемый в секундах. В этом примере таймер установлен на 30 секунд, вы можете изменить его на все, что захотите. Удаление параметра таймера приведет к немедленному запуску процесса выключения.

Когда вы запускаете командный файл, он создает резервную копию определенных файлов и папок, а затем выключает ваш компьютер.

4. Измените свой IP-адрес с помощью командного файла.

В большинстве случаев ваш компьютер использует динамический IP-адрес для подключения к Интернету. Иногда вместо этого вы можете использовать статический IP-адрес, например, на рабочем месте, в школе или в другом месте. Конечно, вы можете вручную переключаться между динамическим и статическим IP-адресом. Но если это место, куда вы регулярно бываете, почему бы не сделать пакетный файл, который сделает всю работу за вас?

Пакетный файл для переключения на статический IP-адрес

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

Пакетный файл для переключения на динамический IP-адрес

Если вы хотите вернуться к динамическому IP-адресу, вы можете использовать этот командный файл.

Откройте следующий текстовый файл, затем скопируйте следующую команду:

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

5. Уложите детей спать с помощью командного файла

Мои дети еще недостаточно взрослые, чтобы играть в видеоигры посреди ночи, но я помню свою тактику против родителей, так что я мог играть в Championship Manager 2 в ранние утренние часы. К счастью, мои родители не знали об использовании команд для управления моими действиями.

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

Чтобы остановить обратный отсчет, нажмите Клавиша Windows + R. (Конечно, детям этого не говорите!)

6. Пакетное переименование и массовое удаление файлов

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

Связанный: Как пакетное переименование и массовое удаление файлов в Windows

7. Играйте в покемонов в пакетном файле.

Этот командный файл не имеет ничего общего с производительностью. Фактически, это полная противоположность. Если вы подвержены игровой зависимости, связанной с покемонами, вы должны пропустить эту игру, потому что это, по сути, Pokémon Red в текстовой форме.


Если не хотите пропустить, можете взять PokéBatch и начни играть. Загрузите текстовый файл, затем измените расширение файла с .текст к .летучая мышь, и тебе хорошо идти.

Если вам нравятся испытания, почему бы не проверить самые веселые испытания покемонов, чтобы доказать свое мастерство в этой серии?

Автоматизируйте свою жизнь с помощью пакетных файлов Windows!

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

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

Для удобства написания и, естественно, восприятия разобью статью по разделам. Но сначала:

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Некоторые манипуляции с пакетными файлами могут нанести вред системе (порой даже непоправимый), поэтому предупреждаю сразу, ни автор статьи, ни администрация сайта не несут абсолютно никакой ответственности за последствия, которые может повлечь за собой выполнение действий, представленных в этой статье. Все материалы представлены здесь исключительно с образовательной целью, и для ознакомления. Надеюсь на ваше понимание и прямоту ваших рук.

Часть первая. Основные моменты при создании bat-файлов

  • Выше уже упоминалось, что пакетный файлы - это обычные текстовые документы. Так и есть, но для того, чтобы они работали и выполняли свои функции, им нужно придать подобающий вид, т.е. поменять расширение. Вообще в Windows используется как расширение *.bat, так и *.cmd, по сути они отличаются весьма незначительно лишь некоторыми нюансами, поэтому, в целях избежания путаницы, будем говорить о bat-файлах. Т.е. чтобы создать исполняемый пакетный файл, мы открываем стандартный блокнот (либо другой, привычный вам текстовый редактор), вбиваем туда нужные нам команды и сохраняем файл с любым именем и расширением bat;
  • По сути, перечень команд, описанных в пакетном файле (батнике) может быть воспроизведён вручную в командной строке (пуск - все программы - стандартные - командная строка), упаковываем их (команды) мы исключительно для удобства, простоты и моментальности (если позволите) воспроизведения;
  • Если испытываете что-то серьёзное и не уверенны в своих действиях, лучше испытывайте детище к примеру на виртуальной машине (в крайнем случае - на компьютере соседа);
  • Список возможных к использованию команд очень велик, посмотреть его можно, набрав в командной строке help, здесь же будут расшифровываться команды по мере их появления в создаваемых батниках;
  • Все инструкции, приведённые в статье, тестировались на ОС Windows XP и Windows 7.

Часть вторая. Синтаксис при написании bat-файлов

  • Каждая команда вводится с новой строчки;
  • Все команды выполняются последовательно за исключением тех случаев, когда внутри самого батника присутствует переход к определённой его части;
  • Комментарии в пакетный файл могут быть добавлены двумя способами:
    - либо после двух двоеточий ::переход к части копирования - либо при помощи команды goto, т.е. вводится команда goto, потом место для перехода, а между ними сам комментарий
  • Если команду необходимо ввести с атрибутом, то сначала вводим команду, затем пробел, слэш и, собственно, сам ключ copy /Y Чтобы посмотреть список возможных атрибутов к конкретной команде, нужно в командной строке ввести команду, затем пробел, слэш и знак вопроса dir /?
  • Для скрытия окна терминала выполняемой команды можно в начале строки поставить знак собачки @, если же требуется скрыть отображение выполнения всех команд, то проще (чтобы не ставить собачку в каждой строчке) в начале батника указать @echo off здесь команда echo off скрывает окна, а собачка впереди неё запрещает отображение выполнения самой echo off
  • Все директории внутри команд, для исключения возможных ошибок, будем вводить в кавычках;
  • По умолчанию при работе с кириллическим текстом на выходе вы можете получить иероглифы, при работе с папками/файлами, имеющими русские имена, вообще может ничего не получиться, это происходит из-за используемых кодировок, поэтому для исключения подобных неприятностей в начале пакетного файла будем указывать кодировку, корректно работающую с кириллицей следующей командой chcp 1251
  • Есть команды (например, удаление файлов, форматирование), которые могут потребовать подтверждения действий. Порой это бывает очень нежелательно, в таком случае, можно вписать ответ заранее в сам пакетный файл. Ответ записывается ДО! команды и отделяется от неё вертикальной чертой |Y|del
  • В командной строке (а значит и в пакетных файлах) при указании директории иногда бывает удобнее пользоваться переменными, нежели прописывать весь путь cd %APPDATA%

Приступим.

Часть третья. Резервное копирование при помощи батников

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

Автоматическое копирование каталогов в папку backup

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

Где D:\diplom\ - папка расположения всех материалов к диплому, а E:\backup\diplom\ - конечная директория резервной копии.
Создаём батник, кидаем его в автозагрузку (пуск - все программы - автозагрузка), и при каждом включении компьютера будет создаваться резервная копия (рк).Чуть усложним. Сделаем, чтобы при включении ПК старые данные сохранялись в папочке diplom_old, а новые в папочке diplom. Тогда батник будет иметь вид

del удаляет ранее созданную вторую рк.
rmdir переименовывает первую рк во вторую.
xcopy создаёт новую рк.
Атрибут /s применяет команду ко всем подкаталогам, атрибут /q отключает запрос на подтверждение действий.Если в двух копиях смысла нет, можно сделать так, чтобы заменялись только те файлы, которые были изменены, те же, которые не изменились, либо вообще были удалены из исходной папки, затронуты не будут. Для этого пишем следующее

Создание бэкапа в архиве

Ну и последнее, что здесь стОит рассмотреть, наверное, на данном этапе - это бэкапы в архиве
Рассмотрим изменённую предыдущую ситуацию. Допустим, нам надо, чтобы при каждом включении ПК создавалась копия папки, запакованная в архив.
Нам необходимо в автозагрузку положить батник со следующим содержимым

Архив папки D:\diplom будет создаваться в E:\backup, именем будет дата и время создания архива, т.е., например 16-Aug-12–14-06-53

Часть четвертая. Автоматизация процесса создания и удаления файлов/каталогов с использованием bat-файлов

Как создать папку из батника

Начнём с самого простого. Создание папки. Папка создаётся командой MD
Чтобы создать папку с именем backup в корне диска D:\, нам необходимо собрать следующего вида пакетный файл

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

Здесь строчкой set datetemp=%date:

-10% мы создаём переменную datatemp на время работы батника и присваиваем ей 10 символов значения системной даты;

Как создать текстовый файл из батника

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

Также, как и в примере с папкой, можно сделать именем текущую дату

Автоматическая очистка папки из батника

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

Строчкой cd "C:\Windows\Temp\" мы переходим в папку temp
Строкой echo Y|del *.* удаляем содержимое этой папки (не саму папку!)

Часть пятая. Прочие возможности bat-файлов

Возможностей, на самом деле, огромное множество. Здесь для примера рассмотрим некоторые из них.

Одна из самых известных возможностей использования батников - это запись содержимого каталога в файл

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

/S заставит батник показать содержимое не только каталога, но и всех подкаталогов.
c:\ поможет отобразить содержимое не того каталога, откуда запускается бат-файл, а нужного нам.
X:\file.txt сохранит конечный файл со списком содержимого в указанное нами место;

Запуск файлов из командной строки

Очень часто полезным оказывается возможность запуска объектов из командной строки (в данном случае уже из бат-файлов). Причем как программ, так и других видов файлов (графических изображений, медиафайлов, текстовых документов и т.п.)
К примеру, если в автозагрузку добавить текстовый документ, то при включении ПК после загрузки системы вы его сразу увидите. Либо откроется плеер и будет проигрывать соответствующий трек. (Подробнее про способы добавления файлов в автозагрузку вы можете прочитать в статье: Автозагрузка. Добавление приложений в автозагрузку Windows)
Для того, чтобы это реализовать, нужно просто в теле бат-файла прописать точный путь до необходимого объекта. Например

Для системных же программ нужно указать лишь её обозначение.

При выполнении этого батника откроется калькулятор. В данном случае строчку chcp 1251 можно опустить (как и в некоторых ситуациях из примеров выше), однако если уж стандартизировать все наши пакетный файлы, то её можно и оставить, вреда не будет.

Часть шестая. Хитрости или шутки в сторону

Здесь рассмотрим ещё несколько интересных возможностей для применения батников. Из названия ясно, что некоторые из действий могут навредить системе (хотя это можно сделать и "голыми руками"), но если делать всё с умом, то может выйти достаточно интересно.

Шпионские штучки. Похищаем содержимое флешки

В самом начале статьи было указанно, что команды в батниках выполняются последовательно, если это не оговорено в самом теле исполнительного файла. Рассмотрим именно этот частный случай. Нуууу, допустим. Вы знаете, что к вам придёт знакомый (а может, знакомая) с просьбой произвести какие-то манипуляции с его/её флэш-карточкой, и вам очень хотелось бы слить все данные с этого накопителя на ваш ПК. Но делать это при госте не совсем удобно, да и просто можно получить "красную карточку". Что мы в таком случае делаем? Создаём батник следующего содержания

Создаём на этот бат-файл ярлычок, в свойствах ярлыка указываем, чтобы файл запускался в свёрнутом состоянии. Дважды кликаем по ярлыку. Что имеем.
:test обозначает начало действия батника
if exist g:\ goto go проверяет наличие в компьютере диска G:\, если он есть, то переходим к части :go (суть в том, что обычно вставленная флешка получает для обозначения первую свободную в системе букву латинского алфавита, проследить это на своём компе не так уж сложно. Вот именно эту буковку мы и указываем вместо G:\)
goto test если диск G:\ не был найден, возвращаемся к началу части :test
:go обозначает начало действия второй части батника
xcopy "G:\*.*" "C:\упс\*.*" копирует всё содержимое диска G:\ в папку упс на диске C:\
Т.е. после того, как мы запустили файл с ярлыка, он запускается в свёрнутом состоянии и циклически проверяет наличие флешки в ПК. Как только флешка там засветится, начнётся копирование всех данных с неё в указанную папку, причем привычного окна копирования файлов не выскочит, всё будет отображаться в свёрнутом окне терминала.Ну, всё что было описанно выше, полезно на своём компе, однако есть несколько плюшек, с помощью которых можно подшутить над другом/подругой.

Маленький вирус в автозагрузку

Первая строка добавляет файл в автозагрузку для всех пользователей на Windows XP (для конкретного пользователя в качестве пути указываем %USERPROFILE%\"Главное меню"\Программы\Автозагрузка\)
Вторая строка добавляет файл в автозагрузку для Windows 7.

Начало обеих строк в виде copy %0 означает копирование "самого себя".
Это сделали. Ещё нам хотелось бы, чтобы после запуска батника и при каждой загрузке ПК появлялась весёленькая надпись, к примеру, "ТЫ ЛАМЕР!"
Для этого добавляем следующее

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

Однако, и первый вариант будет работать.

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

Едем дальше, ближе к вкусностям.
Чтобы наш объект экспериментов растерялся ещё больше, в тело батника по желанию добавляем что-нибудь из следующего:

%SystemRoot%/system32/rundll32 user32, SwapMouseButton >nul - строка меняет кнопки мыши местами. Весьма забавная штуковина, однако если человечек не отличается уровновешенной психикой, от этого советую отказаться. Чтобы поменять кнопки мыши обратно, заходи в панели управления в пункт мышь и там инвертируем галочку в поле обменять назначение кнопок.

Команда rundll32 keyboard, disable отключит клавиатуру вплоть до следующей перезагрузки, а rundll32 mouse, disable то же самое проделает с мышью. Если батник в автозагрузке, то при рестарте это дело, разумеется, повторится.

rundll32 shell32, SHExitWindowsEx 1 - выключит ПК.

rundll32 shell32, SHExitWindowsEx 2 - перезагрузит ПК.

Ну и del "%SystemRoot%Cursors*.*" >nul удалит курсоры мыши ( пользоваться с осторожностью и в самых крайних случаях! )

Теперь остаётся только скомпоновать желаемые строки в единый код

Часть седьмая. Упаковка исполнительного файла

Программный способ упаковки батников

    • конвертировать bat-файл в *.exe при помощи какой-нибудь утилитки (например, bat to exe)
    • создать sfx-архив.

    Упаковка батников в SFX-архив

    Второй вариант в рамках данной статьи чуток подробнее и рассмотрим.
    - Для начала нам надо установить на ПК подходящий архиватор (для этих целей я рекомендую WinRAR, т.к. создание sfx-архивов в нём реализовано наиболее удобно и просто).
    - Создаём нужный нам пакетный файл (батник).
    - Кликаем правой кнопочкой по батнику, выбираем из контекстного меню WinRAR => Добавить в архив (дальше по вкладкам)
    - Общие. Имя любое. Формат - RAR. Метод сжатия обычный. В параметрах архивации ставим галочку напротив Создать SFX-архив.
    - Дополнительно. Жмём на кнопочку Параметры SFX. Вкладочка "Общие", выполнить после распаковки - вписываем имя архивируемого батника с расширением. Во вкладке "Режимы" в разделе "Режим вывода информации" ставим галочку напротив "Скрыть всё". На вкладочке "Текст и графика" можно, например, добавить симпатичную иконку вашему архиву вместо стандартной. Если вы не художник, то иконку можно вытащить из любой программы/игры при помощи стороннего софта, например Restorator.
    - На этом всё. Остальные опции на ваше усмотрение. Жмём кнопочку ОК. В исходной папке с батником появится ещё и наш новый sfx-архив.
    - Чтобы добавить солидность файлу, позволить ему прибавить в весе, можно в архив "напихать" ещё что-нибудь, это может быть что угодно, т.к. цель - только увеличение размера.
    - В архиве может быть сколько угодно батников, при создании архива мы указываем, что выполнять нужно первый (прописываем его имя с расширением), чтобы после этого выполнился следующий, в конце (либо в нужном нам месте) пишем

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

    Вместо заключения

    Стоит отметить, что кроме вышеперечисленных функций при помощи батников можно также редактировать и системный реестр, об этом наша отдельная публикация: Редактирование реестра Windows из командной строки, bat-файлы. Остаётся только напомнить, что вообще команд огромное количество, а вариантов их сочетаний и вовсе - бесконечное множество. Любую команду можно сначала проверить в командной строке, а только потом добавлять в тело пакетного файла.

    image

    Другие статьи

    image

    Фишки батников

    Описание основных возможностей сценариев командной строки

    Далее кратко описаны полезные возможности, которые можно использовать в командных файлах (*.bat;*.cmd aka батники) операционных систем Windows 2000, XP, 2003 и более поздних.

    В этих операционных системах введены существенные расширения возможностей сценариев командной строки, которые позволяют делать, например, следующие вещи:

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

    Справку по конкретной команде также всегда можно получить набрав в командной строке " /?".
    Например, очень познавательно почитать то, что выдается в результате команд set /?, call /?, for /?, if /?.

    Помощь приводится на языке установленной операционной системы.

    Вывод
    Вывод на консоль осуществляется с помощью команды echo. Например, "echo Здравствуй, читатель".
    При использовании в командных файлы команды echo on и echo off позволяют включать и выключать режим вывода на экран самих исполняемых команд.
    Если поставить перед командой знак @, то она на экране не будет выведена в любом случае. Будет видет только результат ее исполнения.
    Например, "@echo no echo".
    Команда "echo." позволяет вывести пустую строку.
    Текущий каталог
    Текущий каталог позволяет изменять команда cd.
    Рекомендуется всегда использовать с командой опцию /d для смены одновременно и текущего диска.
    Например, "cd /d d:\delta".
    Текущий каталог можно узнать также с помощью псевдопеременной %cd%.
    Например, "@echo Current directory is: %cd%".
    При операциях с путями точка "." обозначает текущий каталог, а две точки ".." - каталог уровнем выше.
    Например, команда "cd ..\.." указывает, что нужно перейти двумя каталогами выше.
    Параметры вызова сценариев
    Из пакетного файла переданные параметры можно узнать с помощью переменных %1, %2, %3 и т.д. по порядку.
    %0 расширяется до полного пути к данному командному файлу.
    %* в пакетном файле обозначает все аргументы (например %1 %2 %3 %4 %5 . ).

    Например, после вызова

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

    Описанные модификаторы можно применять в различных сочетаниях для всех параметров. Например:

    Проверка условий
    Проверка условий осуществляется с помощью команды if.
    Синтаксис:
    if [not] строка1==строка2 команда [else выражение]
    При обработке переменных важно учитывать возможность, что они окажутся пустыми. Поэтому, чтобы команда сравнения осталась корректной, операнды лучше заключать в кавычки: if "%1"=="input.txt".
    Расширенный синтаксис:
    if [/i] строка1 оператор_сравнения строка2 команда [else выражение]
    Расширенный синтаксис позволяет использовать регистронезависимое (/i) сравнение со следующими операторами:

    Проверка существования файла:
    if [not] exist имя_файла команда [else выражение]
    Например: if exist $result$.txt del $result$.txt

    Проверка кода возврата:
    if [not] errorlevel число команда [else выражение]
    Условие верно, если предыдущая обработанная команда завершилась с кодом, равным или большим значения число.
    Например:

    Использование меток
    Метки обозначаются идентификатором с двоеточием прямо перед ним.
    Для перехода по меткам используется команда goto.
    Существует специальный вариант команды "goto :eof" для перехода на конец исполняемого сценария.

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

    Запуск команд
    Запускать новые процессы из командной строки можно двумя способами.

    Инструкция " cmd команда " запускает системный пакетный обработчик cmd.exe для выполнения команды команда.
    Если вызов происходит из консоли, то используется имеющаяся, если нет — создается новая.
    Ключи /c и /k указывают, что по завершении исполнения консоль нужно закрыть или оставить, соответственно.

    Инструкция " start команда " запускает обработку команды команда в отдельном параллельном процессе.
    Соответствующие ключи позволяют изменять приоритет запускаемого процесса.
    Ключ /wait указывает, что запустившему процессу следует дождаться завершения запущенного.

    Запускать новые командные сценарии из командных сценариев можно также двумя способами.
    Первый:

    Код возврата команд
    После выполнения любой потенциально сбойной команды код возврата, свидетельствующий о степени успешности ее завершения, сохраняется в специальной псевдопеременной %errorlevel%. Нулевое значение значит, что команда была выполнена успешно, положительные значения свидетельствуют об ошибке, чем больше значение, тем серьезнее проблема.
    Значение кода возврата можно проверить с помощью специальной конструкции if [not] errorlevel число (см. if /?).
    Также, переменную %errorlevel% можно свободно использовать непосредственно.
    Например, "goto answer%errorlevel%" или "echo %errorlevel%".

    Команда exit число прерывает исполнение текущего сценария с возвратом запустившему его процессу заданного кода выхода. По умолчанию производится прерывание сразу всей цепочки вызовов пакетных сценариев. Если необходимо завершить только текущий сценарий и возвратить управление в сценарий, вызвавший его командой call, то нужно использовать ключ /b команды exit. Для выхода из сценария с передачей вызвавшему процессу текущего значения %errorlevel% необходимо использовать команду goto :eof.

    Некоторые команды всегда устанавливают переменную %errorlevel%, некоторые модифицируют ее только при возникновении ошибок, а некоторые вообще ее никогда не меняют.
    Вот пример:

    Копирование
    Команда copy умеет копировать и склеивать файлы.
    Команда xcopy умеет копировать файлы и каталоги.
    Команда ren (rename) умеет переименовывать файлы и каталоги.

    Проверить, удачно ли выполнилась команда можно по коду возврата %errorlevel%.

    Использование нескольких команд и символов условной обработки

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

    Вот пример специализированного скрипта для сравнения файлов:

    Использование переменных среды
    В пакетных файлах можно использовать своеобразные переменные, которые задаются в виде ключ=значение .
    В дальнейшем при обработке команд каждое вхождение подстроки %ключ% заменяется на значение.
    Переменные среды бывают трех видов.

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

    Локальные переменные устанавливаются и используются по-своему в каждом отдельном сценарии, сохраняются только во время его выполнения, а также передаются в дочерние сценарии при вложенных вызовах.

    Псевдопеременные, такие как %CD%, %DATE%, %TIME%, %RANDOM%, %ERRORLEVEL%, обрабатываются особенным образом в зависимости от определенных условий.

    В следующей таблице приведен выборочный список наиболее интересных переменных среды.

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

    Для установки значений переменных используется команда set.
    Установка значений:
    set переменная=значение
    Показ значений:
    set переменная
    Показ значений всех переменных:
    set (без параметров)
    Проверка наличия переменной с заданным именем:
    if defined переменная команда

    Вычисление арифметических выражений
    Команда set поддерживает особое расширение синтаксиса:
    set /a выражение

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

    При использовании символов & | % ^ заключайте выражение в кавычки.
    Любые нечисловые строки в выражении считаются именами переменной среды, чьи значения преобразуются в числа до обработки. Если указано имя переменной среды, которое не определено в текущем окружении, ей присваивается значение нуля, что позволяет выполнять арифметические операции со значениями переменной среды без использования % для получения значения.

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

    Потоки ввода/вывода

    Потоки используются в командных сценариях для унифицированного распределения и перенаправления ввода/вывода.

    В следующей таблице представлены стандартные потоки.

    Каждый поток может быть связан с каким-либо устройством ввода/вывода.

    В следующей таблице представлены стандартные устройства.

    В следующей таблице описаны операторы перенаправления, применимые к потокам и устройствам.

    Перебор фиксированного множества параметров.

    Итерация по файлам.

    Итерация по каталогам.

    Итерация и разбор файлов
    Команда for может также употребляться для чтения строк из файлов и их синтаксического разбора.
    В этом случае используется следующий синтаксис:
    FOR /F ["options"] %переменная IN (набор) DO команда [параметры]
    FOR /F ["options"] %variable IN ("literal string") DO command [command-parameters]
    FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
    или, если использован параметр usebackq:
    FOR /F ["options"] %variable IN (filenameset) DO command [command-parameters]
    FOR /F ["options"] %variable IN ('literal string') DO command [command-parameters]
    FOR /F ["options"] %variable IN (`command`) DO command [command-parameters]

    Набор содержит имена одного или нескольких файлов, которые по очереди открываются, читаются и обрабатываются. Обработка состоит в чтении файла, разбивки его на отдельные строки текста и выделения из каждой строки заданного числа подстрок (в том числе нуля). Затем найденная подстрока используется в качестве значения переменной при выполнении основного тела цикла. По умолчанию ключ /F выделяет из каждой строки файла первое слово, очищенное от окружающих его пробелов. Пустые строки в файле пропускаются. Необязательный параметр "options" служит для переопределения заданных по умолчанию правил обработки строк.
    Возможные ключевые слова для этого параметра:

    Синтаксис команды FOR /F также позволяет обработать отдельную строку, с указанием параметра filenameset, заключенным в одиночные кавычки. Строка будет обработана как единая строка из входного файла.

    Читайте также: