Форум программистов, компьютерный форум, киберфорум
Наши страницы

Batch (CMD/BAT)

Войти
Регистрация
Восстановить пароль
 
Dragokas
Эксперт WindowsАвтор FAQ
16600 / 6985 / 845
Регистрация: 25.12.2011
Сообщений: 10,781
Записей в блоге: 16
#1

Задачи, легко реализуемые с помощью CMD - CMD/BAT

20.07.2015, 21:37. Просмотров 1269. Ответов 1
Метки нет (Все метки)

Прежде, чем перейти к изучению языка Windows Batch,
поставим себе логичный вопрос: "А зачем это нужно? И что он может?
Ведь я, скажем, уже умею делать многие вещи на С++."
В чем преимущества BAT/CMD перед программой EXE ?


Batch - это не программа.
Это пакетный файл, который может содержать:

1) список команд, выполняющихся с помощью интерпретатора командной строки (cmd.exe).

2) ссылки на другие программы как консольные, так и GUI с возможностью передачи им ключей запуска и данных в виде аргументов или потока.

3) логику взаимодействия пп.1,2 благодаря потокам ввода/вывода/ошибок запускаемых команд и программ, а также анализу возвращаемых кодов ошибок по завершению их работы.

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

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

Более конкретно:
  • Совместимость и универсальность (работают на всех Windows-машинах. Не нужны компиляторы)
  • Широкое распространение в администрировании.
  • Правильная постановка задачи = выигрыш в скорости как разработки, так и запуска/работы скрипта.
  • Открытый исходный (исполняемый) код.
  • bat-ов обычно не грызут вирусы-червяки.
  • Batch-команду можно выполнить из глагола реестра без необходимости создавать дополнительный файл.
  • Тоже касается внедрения Batch кода в язык высокого уровня
  • Batch работает с потоками ввода/вывода, и легко может объединять работу нескольких консольных утилит (в отдельных случаях GUI).
  • Быстрая фильтрация информации по ключевому слову (команда | find /i "ключ.слово")
  • Команду Batch можно очень быстро ввести с клавиатуры и получить на экран результат без необходимости поиска сторонней программы.

Практические задачи.

Наиболее популярны:

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


В скобках указывается соответствующая команда консоли, которую Вы можете изучить самостоятельно.
Вывод справки по команде:
Код
Команда /?
Работа с файлами:
  • Создание пустого файла (set /p=<NUL >File.txt)
  • копирование (copy)
  • переименование (ren, move)
  • удаление (del, erase, rd, rmdir)
  • перемещение файлов/папок (из множества папок), по сложным правилам (нумерация, подстановка масок, в зависимости от содержимого, построчное чтение данных и подстановка в другой файл). С протоколированием (на экран), либо дозаписью в файл. (перенаправления >> и >)
  • Пакетная обработка нескольких файлов/папок по критериям (имя, расширение) (For, Dir, Forfiles, Where)
  • Поиск файла по идентификатору безопасности (fsutil file findbysid)
  • Работа с точками соединения NTFS (mklink)
  • правами доступа к файлам/папкам (cacls, icacls)
  • атрибутами (attrib)
  • сравнение файлов (fc)
  • построение дерева каталогов (tree)
  • фильтрация файлов/папок по атрибутам, расширению, сортировка по размеру, имени, даты создания/модификации ... (dir, forfiles, where)
  • Файловые ассоциации (assoc)
  • Протоколирование (дозапись в конец файла) (echo Info >> file.txt)
  • Слияние файлов (copy /B)
Работа с дисковой подсистемой (+ см DiskPart /? и fsutil /?):
  • разметка, изменение размера
  • задание метки тома, атрибута "Активный"
  • информация о файловой системе и преобразование, свободное место на диске
  • просмотр точек монтирования томов (mountvol)
  • создание виртуальных ЖД (видео)
  • ... и многое... многое...
Архивация, разархивирование (для CAB - makecab, extrac32, сторонние утилиты - 7za, rar)
Резервное копирование (xcopy, robocopy)
Реестр:
  • листинг раздела, чтение параметра (reg query)
  • создание раздела, параметра, их модификация (reg add)
  • изменение прав доступа к ветке (сторонняя Microsoft SubinACL)
  • импорт REG и BINARY файлов в реестр (в случае с HKCU - без необходимости в правах)
  • сравнение веток (reg compare)
  • сохранение ветки в файл (reg export, reg save)
Планировщик: добавление задания.
WMI, WMIC - инструментарий управления Windows. Заслуживает нескольких отдельных тем!
Сеть:
  • Работа с шарами (net share)
  • сетевыми дисками (subst, net use)
  • настройка сетевых подключений, Wi-Fi (netsh, rasdial)
  • файрвола, задание правил, порты (netsh)
  • FTP (ftp.exe)
  • информация об открытых по сети файлах (openfiles)
Процессы, службы, драйверы, библиотеки:
  • Построение списка процессов, PID, модулей, занимаемой памяти (tasklist)
  • Завершение процессов передачей WM_Close, а также его принудительное завершение (taskkill)
  • Работа со службами (Sc query..., Net stop, Net start)
  • Построение перечня загруженных в систему драйверов (DriverQuery)
  • Регистрация библиотек в тихом режиме с анализом кода ошибки (regsvr32 /S)
  • Перезагрузка, завершение работы, выход пользователя (shutdown, logoff)
Установка даты/времени (Date, Time)
Работа с простым текстом:
  • Построчное чтение файла (For /F)
  • Фильтрация строк, содержащих указанное слово (find /i)
  • Сокращенный язык регулярных выражений (findstr /R)
  • Подсчет кол-ва строк (find /C /V "")
  • Разбиение текста на части по указанному разделителю (FOR "Delims=...")
  • Получение части строки, начиная с указанной № позииции символа до... (echo %username:~1,3%), либо с конца/начала строки.
  • Замена всех указанных слов в тексте на другое слово (set name=%name:слово=замена%)
  • Копирование в буфер обмена (echo Text | Clip)
  • Сортировка простая в прямом или обратном порядке (Sort)
Переменные, математика, логические операции:
  • Создание подобия массивов (массив, хранимый целиком в "куче")
  • Простые арифметические операции + - * целочисленное деление, битовый сдвиг
  • Логика через оператор IF: < (LSS), > (GTR), >= (GEQ), <= (LEQ), равно (== или EQL), не равно (NEQ, NOT ... ==). Флаг учета регистра символов.
  • Подобие словаря - проверка существует ли переменная (ограничение ключ словаря не может быть пробелом) (IF Defined)
  • Псевдослучайное число (echo %random%)
.... и много еще чего...
Это в т.ч. широкий спектр вспомогательных утилит из состава Resourse Kit, Support Tools, UnxUtils, Sysinternals Suite.

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

Для чего батники не предназначены:
Спасибо Smitis.

  • Батники не предназначены для обработки текстовых файлов. Некоторые очень минимальные средства есть, но именно что минимальные. Имхо, предназначены были для обработки простых чётко структуированных файлов, вроде каких-нибудь логов. И уж точно не для обработки "художественных" текстов в непонятно какой кодировке. Нет, иногда можно и этими средствами задачу решить, но в целом - НЕ предназначены.
  • Батники не предназначены для интерактивного взаимодействия с пользователем. Опять таки, кое что есть, дождаться нажатия клавиши, простейший выбор и т.п., но графический интерфейс на нём не напишешь.
  • Сложные математические рассчеты. Например, деление есть только целочисленное. Поэтому самое сложное, что можно получить это остаток от деления. Хочется степень числа - нужно писать свою функцию.
  • С помощью батников нельзя жарить картошку
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2015, 21:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Задачи, легко реализуемые с помощью CMD (CMD/BAT):

Управление ПК с помощью команд CMD - CMD/BAT
Крч делаю очиститель от разных программ которые были закинуты на ПК через бандлинг. И вот пользуюсь не чистым C++ а командами BAT (CMD...

Вычисление файла с помощью скриптового языка cmd - CMD/BAT
Вычислить файлы, которые связаны с assoc. Их тип связана с txt. Имя файла, дату создания файла.

При выполнении какой задачи Вам впервые пришлось столкнутся с CMD? - CMD/BAT
Только честно!:) Добавлено через 3 минуты Я в школе начал эксель изучать. Информатик предупредил об опасности макросов. Я с другом...

Batch (CMD/BAT) несколько заданий на CMD/BAT - CMD/BAT
1.Напишите bat файл на диске с ,который будет искать на всех дисках файлы с расширением exe,скопирует на диск с папку EXE в сортированном ...

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

Реализуемые алгоритмы - JavaScript
Здравствуйте дорогие форумчане. Мне дали курсач по теме &quot;Реализация алгоритмов на JavaScript&quot;. Хочу узнать, какие математические алгоритмы...

1
Dragokas
Эксперт WindowsАвтор FAQ
16600 / 6985 / 845
Регистрация: 25.12.2011
Сообщений: 10,781
Записей в блоге: 16
20.07.2015, 21:41  [ТС] #2
История развития командной строки

Автор: Алмаз Гимадиев

Современные операционные системы семейства Windows являются прямыми потомками MS-DOS (Microsoft Disk Operation System) или как чаще ее называют DOS.

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

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

Задачи, легко реализуемые с помощью CMD

Командная среда, эмулирующая DOS имеет множество названий, таких как – командная строка, командное окно, командная среда и .т.д. Мы с Вами отойдем от таких размытых терминов и будем называть ее командной строкой.

Преимущества знания командной строки
Так почему же командная строка все еще вызывает интерес? Давайте попробуем разобраться, что мы получим можем изучив ее:
  1. Во-первых, с помощью командной строки возможно создание сценариев автоматизации и пакетных файлов, т.е. выполнение одной или нескольких команд без вмешательства пользователя. Автоматизация заданий, сэкономит время и деньги. (Например, возможно создание cmd файла, который будет в архивировать Вашу систему, запустить антивирус на сканирование, также возможен запуск заданий на удаленном компьютере).
  2. Во-вторых, это управление данными и файлами (Например, копирование - copy, перемещение - move, удаление – del. Добавьте сюда возможность автоматизации и перед Вами мощный инструмент для использования).
  3. В-третьих, администрирование компьютера. По своему желанию можно создать даже службу которая будет запускаться при старте ОС.
  4. В-четвертых, администрирование сети. Многие команды администрирования сети не имеют графических эквивалентов (например – команда ping, pathping, tracert). Эти команды имею первостепенное значение при диагностике и устранении неисправностей проблем с сетью.
Соответственно, друзья – делайте выводы! Изучив командную строку, Вы получите знания, которые скрыты от рядовых пользователей. А знания – это Сила!

Источник
3
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2015, 21:41
Привет! Вот еще темы с ответами:

Автоматически реализуемые свойства - C#
Вот это обычное свойство: class MyClass { private int _field = 0; public int Field { get { return _field; } set { _field =...

Автоматически реализуемые свойства - C#
Не могу понять , вот пример кода который работает using System; // Автоматически реализуемые свойства (Auto-Implemented...

Решение задачи с помощью процедуры - Delphi
С помощью процедуры решить следующую задачу: Дана матрица размера 7х10. Вывести номер её последней строки, содержащего только положительные...

Решение задачи с помощью множеств. - Turbo Pascal
написать программу на паскале Используя тип множеств, напечатать в порядке убывания все целые числа в диапазоне от 1 до 4900, которые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru