Задачи на bat-файлах (часть 1)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
Дополняем шапку: добавляем готовые решения, полезные ссылки.
Примечание: Большие куски кода заключайте в тэг [no][more][/no]
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
[more=Полезные ссылки]
[b]Полезные ссылки:
· Cmd. Описание от разработчиков (англ.) (рус.)
· Урок bat-аники (для начинающих)
· Использование ansi.sys
· Справка по командам в виде Html
· Команды RunDll32
· Пример - получение и обработка списка пользователей
[/more][/b]
[more=Полезные утилиты]
[b]Полезные утилиты:
· addline - добавляет строчку в текст. файл
· base64 - кодирует/раскодирует файл в/из base64
· blat — отправка почты из консоли
· cmdow - изменение параметров и видимости дос-окна
· cnic - включает/выключает сетевой интерфейс
· crc32 - утилита для подсчета контрольных сумм (только CRC)
· curl - передача и прием файлов, используя URL синтаксис
· curtime - утилита для обработки времени в скриптах
· delbyown - поиск файлов, созданных определенным пользователем, на NTFS разделе
· devcon - включение, выключение, удаление и т.д. устройств из Диспетчера Устройств
· dirdate - изменение даты создания/модификации/последнего доступа файлов
· directify - группирование файлов по общим параметрам
· editpath - добавляет или удаляет директории в переменной PATH
· fastsum - подсчет контрольных сумм (только MD5)
· fciv - подсчет контрольных сумм (MD5 и SHA-1)
· fdf - Fast Duplicate Finder, находит одинаковые по содержанию файлы
· fsum - подсчет контрольных сумм (12 различных алгоритмов)
· gsar - General Search and Replace, поиск и замена текста в файле
· hex - вывод бинарного файла в шестнадцатиричном формате
· hstart - скрытый запуск командных файлов и консольных программ
· mirror - копирование, создание точной копии всей структуры директорий
· msgbox - вывод сообщения в диалоговом окне
· msgbox (другая) - еще одна утилита для вывода сообщения в диалогоовм окне
· mtee - выводит входящие данные на экран и в файл (одновременно)
· natcat - мощная утилита для передачи данных по TCP/UDP соединениям
· nircmd - универсальная утилита на все (почти) случаи жизни
· outwit - пакет из 6-ти полезных GNU Win32 утилит
· portqry - проверка статуса TCP и UDP портов на удаленных машинах
· PsTools - отличный набор утилит для администрирования
· Quick Batch File Compiler - позволяет превратить ваш батник в независимое приложение
· regperm - изменение прав доступа к веткам/ключам реестра
· scrnres - screen resolution. Выводит разрешение экрана в консоль
· sed - мощный текстовый фильтр/процессор с поддержкой регулярных выражений
· setacl - изменение прав доступа к объектам
· setenv - утилита для работы с системными переменными
· smtpsend - отправка сообщений на электронную почту
· tst - скриптовая утилита для автоматизации telnet-сессий
· UnxUtils - набор GNU утилит для Win32
· wget - консольная утилита для скачивания файлов по HTTP, HTTPS и FTP протоколам
· Win2000 Resource Kit Tools
· Win2003 Resource Kit Tools
· xcodewin - перекодировщик русского текста, поддерживает 14 кодировок
· Пакет утилит для организации интерфейса в bat-файлах
[/more][/b]
Готовые решения и частые вопросы:
Встроенный справочник по командам
Создание помощи по всем командам консоли 2000 и XP
[more=Альтернативные решения »]
Альтернативные решения
· Альтернатива команде ECHO - позволяет выводить текст в файл без перевода строки.
· Установка задержки (паузы) в батнике
· Установка задержки (паузы) в батнике (используя VBScript)
· Конвертирование файлов (*.com *.exe *.*) в код батника
[/more]
[more=Работа с текстом, датой, и файлами »]
Работа с текстом, датой и файлами
· Создание листинга директорий на примере создания плейлиста
· Переименовывание файлов по дате создания
· Использование даты на день раньше чем сегодня
· Использование даты на день раньше чем сегодня (учитываются високосные годы)
· Использование даты на день раньше чем сегодня (используя VBScript)
· Конвертирование текста из кириллицы в латиницу
· Проверка существования файла и присвоение ему нового имени в случае если такой файл уже существует
· Замена текста в файле
· Удаление файлов в указаном каталоге включая подкаталоги, с ведением лога удаления (удалён/не удалён)
· Чтение из файлов содержащих ключи и значения (подобно структуре .ini файлов)
[/more]
[more=Администрирование, автоматизация и сеть »]
Администрирование, автоматизация и сеть
· Запуск сетевого подключения
· Пример выполнения команд по результату команды ping
· Запуск bat файлов как сервис
· SBS - Sleep before shutdown - Утилита для выключеня и перезапуска компьютера через заданное время
· Перезапуск эксплорера с восстановлением открытых директорий
· Download And Extract - батник-гибрид для закачки архивов и моментальной их распаковки в папку с именем самого архива
[/more]
[more=Работа с переменными и параметрами ком. строки »]
Работа с переменными и параметрами ком. строки
· Разименовывание переменных
· Создание (запись) переменных окружения в реестр
· Способ передачи в бат-файл параметра содержащего символы & и последующей обработки полученного значения
[/more]
Описания работы команд и символов участниками темы:
· setlocal enabledelayedexpansion и переменные окружения
· символы & и && в командной строке
· Переменная %0
Невозможности — что нельзя сделать с помощью командных файлов:
· изменть конфигурацию IP на удаленной машине (без помощи rcmd.exe) [добавил ALEF]
[more=Старая версия первого сообщения]
Готов решить любую задачу по программированию на bat-файлах для системы WinXP.
Вот пример:
Подсчитать количество счастливых 6-ти значных билетов (сумма первых 3-х цифр = сумме последних 3-х).
Мое решение:
Код: rem bilet.bat (c) HACSoft, 2005.
echo off
setlocal enabledelayedexpansion
cls
echo Complete: 00 %%
set cnt=0
set old=0
for /l %%a in (0,1,9) do (
for /l %%b in (0,1,9) do (
for /l %%c in (0,1,9) do (
set /a left=%%a+%%b+%%c
for /l %%d in (0,1,9) do (
for /l %%e in (0,1,9) do (
set /a cmp=left-%%d-%%e
if !cmp! geq 0 (
if !cmp! leq 9 (
set /a cnt+=1
if not !old!==%%b (
set old=%%b
cls
echo Complete: %%a%%b %%
)
)
)
)
)
)
)
)
cls
echo Result: %cnt%