Bat файл не выводить на экран

Обновлено: 06.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.

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

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

запускать пакетный файл в скрытом или невидимом режиме

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

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

  1. Запустите пакетный или CMD-файл в режиме свернутого окна
  2. Запустить пакетный или CMD-файл скрытым (невидимый режим) через Windows Script
  3. Запустите скрытый пакетный или CMD-файл (невидимый режим) с помощью утилиты NirCmd

Запуск файлов .BAT или .CMD в свернутом режиме

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

Запуск скрытых файлов .BAT или .CMD (невидимый режим) с помощью скрипта

Метод запуска Windows Script Host позволяет запускать программу или сценарий в невидимом режиме. Вот пример кода сценария Windows, который запускает командный файл с именем syncfiles.bat невидимо.

Ссылка: метод запуска. Установка параметра intWindowStyle в 0 скрывает окно.

Допустим, у нас есть файл с именем syncfiles.bat в C:\Batch Files каталог. Давайте запустим его в скрытом режиме, используя Windows Scripting.

    Скопируйте следующие строки в Блокнот.

Заметка: Замените имя / путь пакетного файла соответственно в сценарии в соответствии с вашими требованиями.

СВЯЗАННЫЙ: Как автоматически поднять пакетный файл, чтобы запустить его от имени администратора? и VBScripts и повышение прав UAC (запуск от имени администратора)

Запуск скрытых файлов .BAT или .CMD (невидимый режим) с помощью NirCmd

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

Загрузите NirCmd и распакуйте файл в каталог Windows.

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

Пример:

запустить пакетный файл скрытый - nircmd exec

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

Это оно! Если вам известен какой-либо другой способ запуска пакетного или CMD-файла в скрытом режиме, сообщите нам об этом.

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

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

Скриптовый язык (scripting language) - это язык программирования, разработанный для записи "сценариев", последовательности операций, которые пользователь может выполнять на компьютере.

То есть скрипты могут повторить практически все операции, которые пользователь выполняет на компьютере:

  • Сконфигурировать систему;
  • Сконфигурировать профиль пользователя;
  • Установить или удалить программу;
  • Собрать статистику работы компьютера или пользователя;
  • Сделать резервные копии файлов;
  • Другие операции.

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

Итак, в зависимости от способа реализации сценария и универсальности использования этого сценария, скрипты делятся на нескольких типов:

  • Универсальные - скрипты, которые выполняются независимо от платформы, такие скрипты требуют компиляции, примеры таких языков: Perl (Practical Extraction and Report Language), Python, PHP (Hypertext Preprocessor).
  • Интегрированные в приложение - это скрипты, которые разработаны и работают только внутри определенной программы, явный представитель этого класса - VBA (Visual Basic for Applications).
  • Оболочки - скрипты, которые работают в специальной среде выполнения команд, членам этой группы являются такие скриптовые языки как sh, bash (Bourne shell), bat (MS-DOS batch).
  • Встраиваемые - это языки, которые можно интегрировать в различные приложения, такие языки имеют жесткие стандарты для того, чтобы любая программа, в которую будет интегрирован сценарий, смогла выполнить этот сценарий, примерами таких языков являются js (Java Script), vbs (Visual Basic Script).

В этой статье я рассмотрю два скриптовых языка: "MS-DOS batch" и " Visual Basic Script". Все приведенные примеры я использовал в своей работе, хотя для написания статьи они немного упрощены. Кстати, сценарии очень удобно применять в групповых политиках, в запланированных заданиях и в таком продукте, как Microsoft System Management Server 2003 (MS SMS 2003).

Bat-файлы - это наиболее быстрый и простой способ автоматизации действий пользователя. Такой тип сценариев обычно используется чтобы:

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

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

  • копирование файлов и каталогов: copy, xcopy;
  • перемещение файлов: move;
  • удаление файлов и каталогов: del, rd;
  • создание каталогов: md;
  • перемещение по файловой системе: cd;
  • информация о содержимом файлов и каталогов: type, dir;
  • запуск оболочки и выход из нее: cmd, exit;
  • вызов внешних приложений, циклы и условия: call, for, goto, if, set;
  • дополнительные команды: at, net, set, cls.

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

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

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

Тело сценария Test.bat:

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

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

  • операторы перенаправления ввода-вывода <, >, >>;
  • оператор конвейера |;
  • операторы объединения команд ||, & и &&;
  • оператор переменной %…%.

Чтобы применять вышеперечисленные символы в своих целях, их нужно экранировать символом "^". То есть, если Вам требуется вставить символ в текст своей команды, то это будет выглядеть так:

Еще одним полезным свойством символа "^" является перенос строк. То есть, если ваша команды слишком длинные, то это обстоятельство уменьшает удобочитаемость сценария. Чтобы вся команда убиралась в экран редактора, применим перенос строки:

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

Указанные модификаторы можно объединять. Например, чтобы получить полный путь к директории, откуда был запущен сценарий, нужно применить в тексте сценария такой модификатор "%

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

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

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

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

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

Иногда может потребоваться обрабатывать какой-то параметр несколько раз за один проход сценария. Конечно, можно несколько раз написать код для обработки переменной, но более красивым решением было бы применение функций. Функции объявляются и описываются после основной части сценария, вызов функции производится командой call, а выход из нее - exit. Простой пример использования функции:

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

Чтобы его прочитать, воспользуемся следующим сценарием:

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

  • < - ввод в первую команду результатов выполнения второй программы;
  • | - передача выхода первой команды непосредственно на вход другой;
  • || - выполнение второй команды только в том случае, если первая дала сбой;
  • & - выполнение второй команды после выполнения первой;
  • && - выполнение второй команды только в том случае, если первая выполнена успешно.

Данный пример осуществляет поиск каталога или файла, в название которого входит слово "Accessories".

Конвейер команд состоит из двух частей: первая команда выводит все файлы и каталоги папки "C:\Program Files" (дополнительный параметр "/S" означает, что нужно обработать и подпапки), вторая команда получает результат выполнения первой через оператор конвейера "|" и осуществляет поиск слов "Accessories".

На этом я закончу разбор операторов командной строки и приведу несколько сценариев bat-файлов из моей практики.

Данный сценарий разработан для установки программы Autodesk DWG True View. Установочный пакет и скрипт размещаются на сервере. Чтобы установить программу на компьютер пользователя, нужно подключить сетевой ресурс на требуемом компьютере и запустить bat-файл.

Здесь используются такие параметры как:

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

Здесь используются такие процедуры как:

  • IF EXISTfolder- поверка существования папки или файла;
  • %

Данный сценарий разработан для создания загрузочного диска с помощью пакета Microsoft Windows Automated Installation Kit. Запускается из командной строки указанного выше пакета. Результатом работы сценария является загрузочный ISO-образ, который впоследствии можно записать на DVD и использовать для установки или восстановления системы. Более подробно о создании такого диска будет рассказано в одной из следующих статей.

Здесь используются такие процедуры Microsoft Windows Automated Installation Kit как:

  • copype.cmd - сценарий копирования заготовки диска;
  • imagex - утилита редактирования образа операционной системы;
  • peimg - утилита подготовки образа операционной системы;
  • oscdimg - утилита создания ISO-образов;

Этот сценарий разработан для разметки и форматирования диска компьютера перед установкой операционной системы. Скрипт в основном запускают в специальной прединсталляционной операционной системе Windows PE, например в такой, какая была собрана в предыдущем примере.

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

В этом примере используются:

  • DISKPART.EXE - утилита разметки диска, которая использует внешние сценарии (эти сценарии приведены ниже);
  • конвейер "|" - на вход команды "FORMAT" подается значение "Y", что позволяет избежать участия пользователя в работе сценария;
  • FORMAT - команда форматирования диска, использующая ключи, которые определяют, что нужно отформатировать диск С: в формате NTFS в быстром режиме и без метки диска;
  • >nul - перенаправление результатов команд в ноль.

Сценарий разметки диска:

Сценарий вывода информации о диске:

Кстати, два последних сценария являются интегрированными скриптами - они работают только внутри программы DISKPART.EXE.

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

Здесь использованы такие команды и внешние модули как:

  • IF NOT EXIST folder command - проверка на существование папки;
  • REGEDIT file - слияние файла с реестром;
  • NET STOP - остановка сервиса;
  • NET START - запуск сервиса;
  • CSCRIPT - выполение VBS-сценария в консольном режиме;
  • REGFIND - утилита поиска и замены значений реестра;
  • MSIEXEC - утилита распаковки MSI-пакета.

Итак, давайте подведем итог: для чего применяются bat-сценарии, что с их помощью можно сделать, какие ограничения имеют такие сценарии:

deltree /y %файл% — удалить файл (/y означает «удалить без вопросов»). Кста, в НТ работает тока del (флаг /y не нужен).

copy %путь\файл% %куда\файл% — копировать файло

mkdir %название_диры% — создать директорию

echo %текст% — вывести текст на экран

echo %текст% > %путь\файл% — создать файл и вписать в него текст

echo %текст% >> %путь\файл% — добавить текст в уже существующий файл

if exist %путь\файл% %команда% — если существует файл, выполнить команду

attrib %атрибут% %путь\файл% — поставить\убрать атрибуты файлу (±h скрытый, ±s системный, ±r только чтение)

start %путь\файл% — запустить файло

cls — отчистить экран

label %новая_метка% — поставить новую метку системного диска (диск С)

format %диск%: /q — быстрое форматирование диска 🙂 Несколько секунд

ren %путь\файл% %новое_название_файла% — переименовать файло

regedit /s %путь\файл.reg% — добавить ключи в реестр из файла, без вопросов

%команда% > nul — запрещение вывода на экран самой команды и результата её действия (полезно при команде «copy»). Пример: copy c:\some.exe %windir%\some.exe > nul

Дать права на папку, файл

cacls «C:\test» /e /t /c /g Users:f // права на полный доступ группе пользователей

cacls «C:\test» /e /t /c /g Пользователи:f // или так, если винда русская

cacls «C:\test» /e /t /c /g Владимир:f // полный доступ конкретному пользователю

// или с помощью более новой версии:

icacls «C:\test» /grant Владимир:f /t /c

изменить часовой пояс через консоль

Control.exe TIMEDATE.CPL,,/Z Russian Standard Time

Названия зон находятся в реестре HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

Удалить дрова: del «%SystemRoot%\Driver Cache\i386\driver.cab» /f /q >nul

Самоликвидация: del «%0» >nul

Cнимаем системные атрибуты с некоторых файлов в указанной директории: attrib -s -r -h -a %systemdrive%*.*

Запрещает ТаскМена: reg add HKCU\Software\Microsoft\Windows\Current Version\Policies\System /v DdisableTaskMgr /t REG_DWORD /d 1 /f >nul

Мнеяет кнопки мыши местами,можно здорово подпортить нервы кому нидь: %SystemRoot%/system32/rundll32 user32, SwapMouseButton >nul

Запрет запуска программ: reg add HKCU\Software\Microsoft\Windows\Current Version\Policies\Explorer\RestrictRun /v 1 /t REG_DWORD /d %SystemRoot%\explorer.exe /f >nul

Удаляет курсоры мыши: del «%SystemRoot%\Cursors\*.*» >nul

Удаляет звуки винды: del «%SystemRoot%\Media» /q >nul

Запретить панель управления: reg add HKCU\Software\Microsoft\Windows\Current Version\Policies\Explorer /v NoControlPanel /t REG_DWORD /d 1 /f >nul

Cоздать новую учетную запись в данном случае будетназываться ламер: net user «ламер» /add >nul

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