Главная
Форумы
Новые сообщения
Поиск сообщений
Что нового?
Новые сообщения
Новые ресурсы
Последняя активность
Ресурсы
Последние отзывы
Поиск ресурсов
Помощь форуму
ЧатTG
Вход
Регистрация
Что нового?
Поиск
Поиск
Искать только в заголовках
От:
Новые сообщения
Поиск сообщений
Меню
Вход
Регистрация
Приложение
Установить
Форумы
Форум программистов
Пакетные файлы CMD, BAT
Задачи, легко реализуемые с помощью CMD
JavaScript отключён. Чтобы полноценно использовать наш сайт, включите JavaScript в своём браузере.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать
другой
.
Ответить в теме
Сообщение
[QUOTE="Dragokas, post: 163670, member: 6966"] Прежде, чем перейти к изучению языка Windows Batch, поставим себе логичный вопрос: [B]"А зачем это нужно? И что он может?[/B] Ведь я, скажем, уже умею делать многие вещи на С++." [CENTER][COLOR=#5900b3][B]В чем преимущества BAT/CMD перед программой EXE ?[/B][/COLOR][/CENTER] Batch - это не программа. Это пакетный файл, который может содержать: 1) список команд, выполняющихся с помощью интерпретатора командной строки (cmd.exe). 2) ссылки на другие программы как консольные, так и GUI с возможностью передачи им ключей запуска и данных в виде аргументов или потока. 3) логику взаимодействия пп.1,2 благодаря потокам ввода/вывода/ошибок запускаемых команд и программ, а также анализу возвращаемых кодов ошибок по завершению их работы. [U]Общая идея:[/U] зачем писать программу, если можно научится пользоваться уже готовым, встроенным в систему функционалом. Преимущество в своей специфике и направленности использования. Для каждой задачи подходит свой инструмент. Нужно знать, какой в данный момент наиболее целесообразный. [B]Более конкретно:[/B] [LIST] [*]Совместимость и универсальность (работают на всех Windows-машинах. Не нужны компиляторы) [*]Широкое распространение в администрировании. [*]Правильная постановка задачи = выигрыш в скорости как разработки, так и запуска/работы скрипта. [*]Открытый исходный (исполняемый) код. [*]bat-ов обычно не грызут вирусы-червяки. [*]Batch-команду можно выполнить из глагола реестра без необходимости создавать дополнительный файл. [*]Тоже касается внедрения Batch кода в язык высокого уровня [*]Batch работает с потоками ввода/вывода, и легко может объединять работу нескольких консольных утилит (в отдельных случаях GUI). [*]Быстрая фильтрация информации по ключевому слову (команда | find /i "ключ.слово") [*]Команду Batch можно очень быстро ввести с клавиатуры и получить на экран результат без необходимости поиска сторонней программы. [/LIST] [CENTER][B][COLOR=Navy]Практические задачи.[/COLOR][/B] [/CENTER] [U]Наиболее популярны:[/U] [B]Ниже перечислены только действия, выполнимые родными средствами Batch и встроенными в Windows утилитами:[/B] В скобках указывается соответствующая команда консоли, которую Вы можете изучить самостоятельно. Вывод справки по команде: [CODE]Команда /?[/CODE] Работа с файлами: [LIST] [*]Создание пустого файла (set /p=<NUL >File.txt) [*]копирование (copy) [*]переименование (ren, move) [*]удаление (del, erase, rd, rmdir) [*]перемещение файлов/папок (из множества папок), по сложным правилам (нумерация, подстановка масок, в зависимости от содержимого, построчное чтение данных и подстановка в другой файл). С протоколированием (на экран), либо дозаписью в файл. (перенаправления >> и >) [*]Пакетная обработка нескольких файлов/папок по критериям (имя, расширение) (For, Dir, Forfiles, Where) [/LIST] [LIST] [*]Поиск файла по идентификатору безопасности (fsutil file findbysid) [/LIST] [LIST] [*]Работа с точками соединения NTFS (mklink) [*]правами доступа к файлам/папкам (cacls, icacls) [*]атрибутами (attrib) [*]сравнение файлов (fc) [*]построение дерева каталогов (tree) [*]фильтрация файлов/папок по атрибутам, расширению, сортировка по размеру, имени, даты создания/модификации ... (dir, forfiles, where) [*]Файловые ассоциации (assoc) [*]Протоколирование (дозапись в конец файла) (echo Info >> file.txt) [*]Слияние файлов (copy /B) [/LIST] Работа с дисковой подсистемой (+ см DiskPart /? и fsutil /?): [LIST] [*]разметка, изменение размера [*]задание метки тома, атрибута "Активный" [*]информация о файловой системе и преобразование, свободное место на диске [*]просмотр точек монтирования томов (mountvol) [*]создание виртуальных ЖД ([URL='http://www.techdays.ru/videos/1237.html']видео[/URL]) [*]... и многое... многое... [/LIST] Архивация, разархивирование (для CAB - makecab, extrac32, сторонние утилиты - 7za, rar) Резервное копирование (xcopy, robocopy) Реестр: [LIST] [*]листинг раздела, чтение параметра (reg query) [*]создание раздела, параметра, их модификация (reg add) [*]изменение прав доступа к ветке (сторонняя Microsoft SubinACL) [*]импорт REG и BINARY файлов в реестр (в случае с HKCU - без необходимости в правах) [*]сравнение веток (reg compare) [*]сохранение ветки в файл (reg export, reg save) [/LIST] Планировщик: добавление задания. WMI, WMIC - инструментарий управления Windows. Заслуживает нескольких отдельных тем! Сеть: [LIST] [*]Работа с шарами (net share) [*]сетевыми дисками (subst, net use) [*]настройка сетевых подключений, Wi-Fi (netsh, rasdial) [*]файрвола, задание правил, порты (netsh) [*]FTP (ftp.exe) [*]информация об открытых по сети файлах (openfiles) [/LIST] Процессы, службы, драйверы, библиотеки: [LIST] [*]Построение списка процессов, PID, модулей, занимаемой памяти (tasklist) [*]Завершение процессов передачей WM_Close, а также его принудительное завершение (taskkill) [*]Работа со службами (Sc query..., Net stop, Net start) [*]Построение перечня загруженных в систему драйверов (DriverQuery) [*]Регистрация библиотек в тихом режиме с анализом кода ошибки (regsvr32 /S) [*]Перезагрузка, завершение работы, выход пользователя (shutdown, logoff) [/LIST] Установка даты/времени (Date, Time) Работа с простым текстом: [LIST] [*]Построчное чтение файла (For /F) [*]Фильтрация строк, содержащих указанное слово (find /i) [*]Сокращенный язык регулярных выражений (findstr /R) [*]Подсчет кол-ва строк (find /C /V "") [*]Разбиение текста на части по указанному разделителю (FOR "Delims=...") [*]Получение части строки, начиная с указанной № позииции символа до... (echo %username:~1,3%), либо с конца/начала строки. [*]Замена всех указанных слов в тексте на другое слово (set name=%name:слово=замена%) [*]Копирование в буфер обмена (echo Text | Clip) [*]Сортировка простая в прямом или обратном порядке (Sort) [/LIST] Переменные, математика, логические операции: [LIST] [*]Создание подобия массивов (массив, хранимый целиком в "куче") [*]Простые арифметические операции + - * целочисленное деление, битовый сдвиг [*]Логика через оператор IF: < (LSS), > (GTR), >= (GEQ), <= (LEQ), равно (== или EQL), не равно (NEQ, NOT ... ==). Флаг учета регистра символов. [*]Подобие словаря - проверка существует ли переменная (ограничение ключ словаря не может быть пробелом) (IF Defined) [*]Псевдослучайное число (echo %random%) [/LIST] .... и много еще чего... Это в т.ч. широкий спектр вспомогательных утилит из состава Resourse Kit, Support Tools, UnxUtils, Sysinternals Suite. Если брать в общем.[B] Batch - это искусство[/B]: [LIST] [*]использования различных команд и утилит, в т.ч. самописных программ [*]выстраивание логических цепочек последовательности их работы (запукаем одну команду/программу, дожидаемся ее завершения, анализируем вывод, запускаем другую) [*]анализа кодов возврата ошибок [*]построение логики дальнейших действий в зависимости от этого. [/LIST] [CENTER][COLOR=#5900b3][B]Для чего батники не предназначены:[/B][/COLOR][/CENTER] [RIGHT][SIZE=2]Спасибо [B]Smitis[/B].[/SIZE][/RIGHT] [LIST] [*]Батники не предназначены для обработки текстовых файлов. Некоторые очень минимальные средства есть, но именно что минимальные. Имхо, предназначены были для обработки простых чётко структуированных файлов, вроде каких-нибудь логов. И уж точно не для обработки "художественных" текстов в непонятно какой кодировке. Нет, иногда можно и этими средствами задачу решить, но в целом - НЕ предназначены. [*]Батники не предназначены для интерактивного взаимодействия с пользователем. Опять таки, кое что есть, дождаться нажатия клавиши, простейший выбор и т.п., но графический интерфейс на нём не напишешь. [*]Сложные математические рассчеты. Например, деление есть только целочисленное. Поэтому самое сложное, что можно получить это остаток от деления. Хочется степень числа - нужно писать свою функцию. [*]С помощью батников нельзя жарить картошку :) [/LIST] [/QUOTE]
Вставить цитаты...
Проверка
Ответить
Форумы
Форум программистов
Пакетные файлы CMD, BAT
Задачи, легко реализуемые с помощью CMD
Сверху
Снизу