Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/1813: Рейтинг темы: голосов - 1813, средняя оценка - 4.60
Эксперт WindowsАвтор FAQ
17589 / 7432 / 884
Регистрация: 25.12.2011
Сообщений: 11,227
Записей в блоге: 16
1

Каталог простых примеров решенных задач BAT/CMD, с чего начать (■■■ основная тема ■■■)

14.10.2012, 22:28. Просмотров 357087. Ответов 41

Тема создана для размещения "классических" примеров решения
только самых распространенных задач, предназначенных как для новичков, так и в роле справки (напоминания) для профессионалов.

Правила и особенности темы
  • первый пост содержит четкую структуру категорий и будет наполняться ссылками на будущие примеры из этой темы, а также гиперссылками на другие темы в разделах CMD (в редких случаях VBS).
  • в наполнении темы может поучавствовать любой желающий;
  • целесообразность поста в данной теме определяю я, поэтому такой пост может быть удален без объяснения причин;
  • автора размещенных здесь примеров будут отмечены отдельным списком благодарностей.
  • запрещено обсуждение выложенных здесь примеров. Если у Вас возникли проблемы - создавайте новую тему, ссылаясь на конкретное сообщение из этой темы (правый клик над сообщением c примером, слово "Permalink")

Что требуется от пользователей
  • разместить примеры кода BATCH, которые соответствуют задаче из определенной категории в шапке темы;
  • указать гиперссылку на тему, где по-Вашему подан "классический" пример решения задачи;
  • как исключение, разрешается давать ссылку на тему с другого форума мне в личку;

    В теме: Предложения по совершенствованию раздела и закреплению в "ВАЖНЫЕ" новых тем
  • принимаются предложения о внесении изменений в перечень категорий и их расположение, а также список задач.
  • предложения об изменении структуры/стиля оформления и т.п.

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

Все темы, побывавшие в шапке:
Список тем

Обсуждение сложных кодов, команд и синтаксиса*
Тестирование полезных скриптов
*** Перечень изменений и новшеств в закрепленных темах
Предложения по совершенствованию раздела и закреплению в "ВАЖНЫЕ" новых тем
Windows Resource Kit
BAT/CMD файлы (полезные скрипты от bombus)
Обсуждение сложных кодов, команд и синтаксиса*
Ключи запуска программ, вспомогательные утилиты (Windows Resource Kit, Support Tools)
Тонкости языка, редкие команды и сложные скрипты
Полезные BAT/CMD скрипты
Каталог простых примеров решенных задач BAT/CMD, с чего начать (■■■ основная тема ■■■)
Robocopy — описание и примеры использования, XCOPY, HoboCopy
Коды возврата ошибок (расшифровки ErrorLevel)*
Наиболее частые ошибки, заметки особенностей программинга BAT файлов, баги интерпретатора*
Литература, учебники, пособия по CMD/BAT, список команд
Русский текст в консоли
FAQ по файлам BAT/CMD
Командные сценарии-гибриды
Перекодировка текста (сборник кодов для различных кодовых страниц)



******************** Перечень категорий и задач: ********************

С чего начать
  • Как правильно скопировать и выполнить свой первый код? эта тема
  • Структура кода Batch-файла эта тема
  • Русский текст в консоли (что делать с "абракадаброй") ссылка
  • Как задать аргумент при запуске командного файла эта тема ссылка
  • Как проверить заданы ли аргументы запуска бат-файла ссылка
  • Как не нужно запускать .Bat .Cmd файлы ссылка
  • Как запустить батник от имени Администратора Програмно Вручную
  • Общие сведения о командной строке Windows ссылка
  • В чем разница между *.cmd и *.bat - ссылка
    Мельком просмотреть все закрепленные темы (они периодически пополняются). Полный список тем выше.

Архиваторы и операции с ними
  • WinRAR ссылка Англ.примеры Справка
  • 7Zip Справка
  • Cab ссылка ссылка
    - Извлечение
  • Разархивирование файлов по маске из архивов ARJ, RAR, ZIP, 7Z с удалением из архива ссылка
    - По датам
  • Создание еженедельных архивов с обновлением (запускать можно каждый день) ссылка
  • Архивация в 7zip файлов с определенной датой создания (модификации) и маской ссылка
    - Другие операции:
  • Поиск файла в архиве ссылка
  • Архивирование каждой папки в отдельный архив (WinRAR, 7zip) ссылка

Автозапуск

  • -- через папку "Автозапуск
  • помещение в папку "Автозапуск"
    -- через реестр
  • Поместить программу в автозапуск через реестр эта тема
  • запись пути к файлу в реестр ссылка
    -- через планировщик заданий
    Кликните здесь для просмотра всего текста

    Пример добавления нового задания:

    1) программно через командную строку:
    Bash
    1
    
    SCHTASKS /Create /TN Calculator /TR %windir%\system32\calc.exe /SC WEEKLY /D MON,TUE,WED,THU,FRI /ST 09:28 /RU домен\пользователь /RP пароль
    Для выполнения задания с повышенными привилегиями добавьте ключ /rl highest

    2) вручную через окно планировщика:

    Пуск -> Выполнить (или Win + R) -> taskschd.msc -> Нажмите {ENTER}

    Действия -> Добавить простое задание:

    - на триггер назначаем запуск батника или другой программы;
    - выбираем периодичность запуска;
    - по желанию галочку - "запускать с правами администратора";
    - галочку ~ прим. "активировать задачу сразу после создания".

    Служба планировщика заданий должна быть запущена для выполнения задания.
    Можно запустить ее программно:
    Bash
    1
    
    net start schedule
    и заодно установить ее автозапуск вместе с системой:
    Bash
    1
    
    sc config schedule start= auto
    Все операции должны выполняться в режиме
    повышенных прав.

    -- Через Autorun.inf
  • с диска (autorun.inf), отключение автозапуска на всех дисках ссылка

Автоматизация
  • Имитация нажатия клавиш (VBS) ссылка
  • Имитация нажатий клавиш (другие программы) ссылка ссылка
  • Как запустить внешнюю программу ссылка
  • Как запустить внешнюю программу с ожиданием завершения ее работы ссылка ссылка
  • Сворачивание окна ссылка
  • Центрирование окна ссылка
  • Имитация нажатий кнопок мыши, позиционирование указателя ссылка
13
Вложения
Тип файла: zip win_iconv.zip (9.9 Кб, 257 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2012, 22:28
Ответы с готовыми решениями:

Как задать вопрос на форуме Batch и выделить свой код? (■■■ Кто первый раз в этом разделе ■■■)
Как задать вопрос на форуме Batch и выделить свой код? Важно знать: у нас есть "тема-каталог...

WiLD: Алгоритм работы ■ (основное обсуждение) ■
Обсуждение части проекта: https://www.cyberforum.ru/cmd-bat/thread866656.html Полезные ссылки:...

Lenovo G500 (LA-9632 rev 1.0) не включается
Добрый день. Ноутбук пришел перебитым кабелем з.у. В EC KB9012QF дырка, кз по B+. По B+ в к.з. был...

Lenovo G500 (LA-9632) - Сильно греется хаб
Всем добрый день. Принесли ноут Lenovo G500 мать la-9632 При включении не было изображение....

41
Эксперт WindowsАвтор FAQ
17589 / 7432 / 884
Регистрация: 25.12.2011
Сообщений: 11,227
Записей в блоге: 16
14.10.2012, 22:28  [ТС] 2
Аргументы запуска бат-файла (параметры)
  • Проверка на наличие аргумента ссылка
  • Как задать и как использовать аргументы при запуске командного файла ссылка ссылка
  • Отобрать уникальные аргументы, заданные при запуске бат-файла ссылка
  • Передача параметров команде Call ссылка
  • Передача параметров (аргументов) командному файлу, подсчет их количества ссылка
  • Обработка значений множества аргументов ссылка ссылка
  • Смещение параметров (аргументов) Shift ссылка ссылка Описание
  • Сложный парсинг аргументов ссылка

Визуализация и интерфейс
  • Отобразить сообщение в стандартном окне Windows msg ссылка
  • Изменить цвет, фон консоли color /?
  • Изменить размер консоли mode con: cols=58 lines=20
  • Скрыть консольное окно 1.VBS ссылка 2.cmdow Скачать 3.Hidec скачать 4.Hidcon скачать
  • Переключение языка команд консоли на английский ссылка
  • Создание скриншотов (ScreenShoot) ссылка
    - Меню
  • Меню с подтверждением клавишей [ENTER] Set /p ссылка
  • Меню с моментальным выбором Choice ссылка ссылка
  • "Поймать" нажатие клавиши ESC (escape) ссылка
  • Диалоговое окно поверх всех окон с прозрачностью и выбором расположения на экране ссылка
  • Всплывающее окно Popup (BAT-VBS) ссылка
  • Диалоговое окно выбора папки/файла ссылка
    - Прогрессбар
  • Прогрессбары - ссылка
  • Как сделать прогрессбар? - ссылка (и дальше по теме)
  • Слежение за ходом выполнения задачи (и ее отмена) - ссылка
  • Прогрессбар копирования файла - ссылка
  • Анимация ссылка

Дата, время
3
Эксперт WindowsАвтор FAQ
17589 / 7432 / 884
Регистрация: 25.12.2011
Сообщений: 11,227
Записей в блоге: 16
14.10.2012, 23:02  [ТС] 3
Диски, разделы и устройства
  • Получить перечень разделов ссылка ссылка
  • Определить тип диска (только съемные, флешка…) ссылка
  • Отследить подключение флешки ссылка ссылка ссылка
  • Смонтировать папку (удаленный сетевой ресурс) на диск subst, net use ссылка
  • Проверка свободного места на диске в cmd ссылка
  • Получение серийного номера съемного устройства и всех ЖД ссылка
  • Перечень точек монтирования томов, создание точки соединения (Junction Point) ссылка
  • Отключение любого USB-устройства ссылка
  • Отключение флеш-накопителя ссылка
  • Удаление устройств с помощью DevCon - ссылка
  • Монтирование vhd как новой папки - ссылка

Защита и безопасность
  • Рекурсивная установка прав на файлы и реестр ссылка
  • Очистка временных файлов, кеша ссылка
  • Удаление последствий действия вирусов ярлыки папок
  • Атрибуты – проверка и установка/снятие. ссылка
  • Права на папку/файл и редактирования прав доступа ACL-таблицы ссылка ссылка ссылка
  • Элевация прав запуска (или вывод диалога UAC повышения прав) ссылка
  • Изменение прав на ветку реестра MSDN
    Кликните здесь для просмотра всего текста
    Bash
    1
    
    ::1subinacl /subkeyreg HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR /grant=ИмяПользователя(или Группы)=F::2subinacl /subkeyreg HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB /revoke=Все /grant=Все=R /revoke=Администраторы
  • Антивирусная проверка файлов в пакетном режиме ссылка Скачать DevCon.

Интернет, локальная сеть, Email, FTP, IP-адрес, Ping
  • - FTP-сервер (прием/отправка данных)
  • Памятка по командам FTP ссылка
  • С проверкой CRC ссылка
  • Проверить наличие файла ссылка
  • Скачать по маске ссылка
  • Настройка правил безопасности (firewall/файрвол) ссылка
  • WinSCP оф.сайт оф.сайт
  • Скрипт отправки на FTP и копирования ссылки в буфер обмена (VBScript + BAT) ссылка
  • Батник, который скачивает недостающие файлы по ftp ссылка
  • Перенести случайный txt файл с ftp ссылка
    - IP-адрес, прокси/proxy
  • Готовые функции от Ritchie Lawrence ссылка
  • Смена IP-адреса
    Bash
    netsh interface ip set address name="Имя интерфейса" source=static addr=<Адрес> mask=<Маска> gateway=<Шлюз>
  • Смена прокси ссылкассылка
  • Как задать дополнительный DNS-адрес? ссылка
  • Определить свой локальный/внешний IP-адрес ссылка
    - Статистика, сканирование и мониторинг сети, статус
  • Проверка наличия доступа к сети интернет ссылка
  • Занести статистику Ping в Log-файл ссылка
  • Периодический опрос хоста и вывод на экран времени и Ping с ведением Log-файла ссылка
  • Сканер шлюзов и клиентов локальной сетиссылка
  • Трассировка маршрута tracert к IP и запись в Log-файл ссылка
  • Скорость подключения к сети Интернет ссылка
  • Мониторинг и закрытие TCP подключений - ссылка
    - Сетевые диски и подключения
  • Смонтировать папку (удаленный сетевой ресурс) на диск и назначить удобное имя эта тема
  • Подключение односеансового сетевого диска с первой свободной буквой для сетевой папки ссылка
  • Вывод списка всех сетевых подключений в локальной сети ссылка
  • Автоматическое подключение к Remote Desktop (RDP) - ссылка
    - отправка электронной почты
  • blat ссылка
  • Объект CDO.Message BAT+VBS VBS
  • TheBat ссылка
  • Telnet Через VBScript
    - Устройства, адаптеры (подключение / отключение)
  • Утилита Microsoft CNic для манипуляции сетевыми подключениями ссылка
  • Отключить/подключить сетевую карту, 3g-модем ссылка ссылка ссылка
  • Определить наличие подключения к сети интернет ссылка
  • Перечень COM-портов ссылка ссылка
  • Разорвать подключение по указанному порту ссылка ссылка
  • Подключение к Wi-Fi с указанием идентификатора SSID сети ссылка
    - Удалённое подключение
  • Psexec - в доступе отказано ссылка
    - Другое
  • Узнать установленный по-умолчанию браузер ссылка
  • Отправка файла через cmd на другой компьютер, зная его ip ссылка
4
Эксперт WindowsАвтор FAQ
17589 / 7432 / 884
Регистрация: 25.12.2011
Сообщений: 11,227
Записей в блоге: 16
14.10.2012, 23:02  [ТС] 4
Кодировка
Комбинированные бат-файлы
Математические (арифметические) операции
Операционная система и другие устройства
  • Буфер обмена - чтение и запись ссылка
    - Окна
  • Определение класса окна ссылка
    - Работа с устройствами
  • devcon ссылка
    - Звук и видео
  • Говорящий батник =) ссылка
  • Воспроизведение звука в скрытом режиме тема
  • Открыть несколько медиа-файлов по указанному пути - ссылка
    - Клавиатура
  • Получение сканкодов клавиш ссылка
    - Мышь
  • Управление положением мыши на экране ссылка
  • Нажатие кнопки и сворачивание окна программы ссылка
    - Браузер
  • Запуск браузера в программе по-умолчанию ссылка
  • Добавление к IE надежных узлов и отключение элементов ActiveX ссылка
    - Интерфейс, настройки и твики, совместимость
  • Настройка совместимости приложения ссылка
  • Настройка быстродействия Тема1
  • Домашняя страница браузера Тема1
  • Панель быстрого запуска Тема1
  • Классическое меню пуск Тема1
  • Скрыть/Отобразить рабочий стол ссылка
    - Учетная запись (пользователи)
  • Выполнить Log Off другим учетным пользователям кроме своей учетки ссылка
  • Завершение терминальной сессии (Log off) конкретного пользователя ссылка
  • Получить SID текущего пользователя - ссылка
  • Перезапуск сеанса Windows ссылка
    - Файловая система
  • Рекомендации при повреждении системных файлов ссылка
  • Проверка свободного места на диске в cmd ссылка
    Офис - Службы
  • Настройка типа запуска службы ссылка
    - Ярлык
  • Создание ярлыка, чтение, изменение параметров ярлыка, изменение иконки ярлыка (vbs) ссылка
  • Запуск нескольких программ через один ярлык ссылка
    - Другое
  • Смена экранной заставки ссылка
  • Настройки параметров CMD через реестр ссылка
  • Отображение скрытых/системных файлов ссылка
2
Эксперт WindowsАвтор FAQ
17589 / 7432 / 884
Регистрация: 25.12.2011
Сообщений: 11,227
Записей в блоге: 16
14.10.2012, 23:02  [ТС] 5
Память, версия ОС, конфигурация компьютера
  • Версия ОС, разрядность
  • Память, занимаемая процессом tasklist /? ссылка
  • Количество оперативной памяти, памяти видеокарты ссылка
  • Загруженность канала интернет ссылка
  • Информация о системе ссылка
  • Информация о процессоре, первый логический диск ссылка

Переменные, массивы, передача параметров (аргументов)
  • Шпаргалка по переменным (урезание части строки) - ссылка
  • Существует ли переменная (присвоено ли ей значение) if defined variable
  • Замена части значения переменной ссылка
  • Разбиение строки по разделителю (по аналогии Split) на неограниченное число подстрок (без использования токенов) ссылка
  • Буфер обмена ссылка
  • Создание массивов создание словаря функция
  • Вывод массива на печать ссылка
  • Очистка массива
  • Сохранение в переменной вывода программы ссылка
  • Определение длины переменной эта тема эта тема
  • Системные переменные окружения: перечень - Set, перманентное сохранение через SetX - ссылка; получение значения в среде VBS - CreateObject("WScript.Shell").ExpandEnvironmentStrings("%tem p%")
  • Добавить путь в системную переменную окружения Path ссылка
  • Получить значение переменной, имя которой записано в другую переменную эта тема
  • Двойное раскрытие переменных (разыменование переменной) ссылка
  • "Тройное" раскрытие переменной ссылка
  • Модификаторы значения аргумента эта тема
  • Сохранение всех переменных среды перед выходом из бат-файла + считывание (восстановление) при входе ссылка

Потоки, перенаправление, конвеер Site Статья
  • - Input/Output Stream (поток ввода/вывода) MSDN (англ.)
  • StdIn <
  • StdOut 1>
  • StdError 2>
  • Конвеер |
  • Перехват вывода консольного приложения ссылка ссылка
  • MySQL.exe ссылка
    - File Stream (файловый поток)
  • Чтение и запись в/из файлового потока ссылка
  • Запись в файловый поток (Секретные технологии Windows) ссылка
  • Чтение из файлового потока ссылка
    - Multi-Threading ("многопоточность", или нечто похожее на нее)
  • Многопроцессное создание пустых файлов ссылка

Процессы
  • Запущен ли процесс эта тема
  • Завершить работу процесса эта тема
  • Ожидание завершения установки программы ссылка
  • Получение PID, имени, пути и параметров запуска процесса ссылка
  • Получение PID (Process ID) запускаемого процесса ссылка
  • Количество памяти, занимаемой процессом ссылка
  • Найти процессы, которые занимают наибольшее кол-во памяти ссылка
  • Как узнать родительский процесс батника ссылка
  • Запуск от администратора: проверка успешности операции - ссылка
3
Эксперт WindowsАвтор FAQ
17589 / 7432 / 884
Регистрация: 25.12.2011
Сообщений: 11,227
Записей в блоге: 16
14.10.2012, 23:02  [ТС] 6
Реестр
  • экспорт реестра в файл ссылка*[]
  • создание копии реестра ссылка
  • импорт ключа из файла без подтверждения
  • получение списка ключей
  • получение списка разделов
  • чтение значения ключа
  • создание нового раздела
  • создание новой записи ссылка
  • удаление раздела/ключа реестра ссылка ссылка
  • проверка существования раздела или ключа ссылка
  • изменение значения ключа замена части ключа
  • Работа с реестром сайт
  • Рекурсивный поиск значения параметров в реестре и замена другими значениями (XP и Win 7) ссылка
  • Открыть редактор реестра в указанной ветке ссылка

Специальные символы и особенности синтаксиса
  • Назначение спецсимволов и примеры работы с ними
  • запись в переменную (в файл) специального символа эта тема ссылка
  • Экранирование восклицательного знака ссылка
  • Подстановочные знаки *?<> ссылка

Текстовые операции
  • Способы отображения содержимого текстового файла на консоли ссылка
  • поиск строки find, findstr Site ссылка
  • замена эта тема
  • парсинг https://www.cyberforum.ru/cmd-... 78462.html
  • сортировка Sort /?
  • Проверка на содержание подстроки в строке эта тема эта тема
  • Определение длины строки эта тема
  • выборка, регулярные выражения Site
  • подсчет количества строк эта тема ссылка
  • Получить N-ю строку из файла - ссылка
  • подсчет символов эта тема (grep)
  • подсчет определенных знаков эта тема (grep)
  • Вывод на печать файла, начиная со строки с номером X, заканчивая номером Y ссылка ссылка ссылка
  • Изменение регистра текста эта тема
  • Сравнение без учета регистра букв эта тема
  • Вывод текста без переноса на новую строку эта тема
  • Получение части строки (урезание строки) эта тема
  • Печать строки справа налево эта тема
  • Стереть выведенный в консоли текст cls Часть текста - эта тема
  • Вырезать первые N строк из текстового файла и скопировать в другой - ссылка
  • Вывод последних N строк в текстовом файле ссылка
  • Регулярные выражения через FindStr ссылка
  • Регулярные выражения egrep, sed ссылка
  • Удаление пустых строк и строк, состоящих только из пробелов ссылка
  • Удаление строки из файла (указанной по номеру) ссылка
  • Удаление строки из текстового файла (по заданному слову) ссылка
  • Нумерация в конце строки ссылка
  • Добавление и удаление символа к каждой строке файла ссылка
  • В каждую строку перед первым словом добавить свой текст ссылка
  • Удаление строк из файла 1 которые содержатся в файле 2 ссылка
  • Поиск подряд ищущих символов в тексте и удаление таких строк ссылка
  • Удалить одинаковые слова (словосочетания) в одном текстовом файле ссылка
  • Выделить из текстового файла n-ую строку - ссылка
  • Поиск и замена в файле - ссылка
  • Цветной текст - ссылка ссылка ссылка Windows10
  • Вывод файла в одну строку ссылка
  • Запрет удаления пустых строк ссылка
3
Эксперт WindowsАвтор FAQ
17589 / 7432 / 884
Регистрация: 25.12.2011
Сообщений: 11,227
Записей в блоге: 16
14.10.2012, 23:02  [ТС] 7
Циклические операции (часть см. в «Файловые операции)
Файловые операции
  • Готовые функции от Ritchie Lawrence ссылка
  • Создать пустой файл (без переноса каретки) ссылка
  • Создать файл определенного размера ссылка
  • Создать файл/папку, файлы/папки по шаблону, по заданному отдельным файлом перечню.
  • Скопировать папку Robocopy (MSDN)
  • Скопировать только содержимое папки
  • Скопировать файл/файлы по маске
  • Скопировать файлы по маске с исключением
  • Скопировать файлы, заданные перечнем в отдельном файле
  • Переименовать файл/папку ren, move
  • Переименовать группу файлов/папок
  • Переименовать файл, если он уже существует в целевом каталоге при копировании ссылка
  • Переместить файл/папку в папку на другом диске move Для множества папок/файлов - циклом ссылка
  • Получить размер файла ссылка
  • Получить размер папки ссылка
  • Поиск файлов по маске с рекурсией
  • Удалить файл/файлы по маске del *.txt
  • Удалить папку со всем содержимым rd /?
  • Удалить содержимое папки, кроме (за исключением) одной вложенной ссылка
  • Удалить только содержимое папки (без подпапок) del c:\papka\*.*
  • Удалить только пустые каталоги - ссылка.
  • Удалить дерево каталогов и все что в них лежит, если таких каталогов нет во втором ссылка
  • Удалить файл или папку с некорректным именем ссылка
  • Удаление ярлыков с рабочего стола ссылка
  • Конкатенация, объединение файлов ссылка
  • UNC-путь, обход ограничений, некорректные имена ссылка
  • Сравнение файлов, проверка целостности fc, copy /V ссылка ссылка
  • Вывести список файлов с указанием нескольких расширений ссылка
  • Присвоение переменной первой строки файла эта тема
  • Чтение файла For /F "usebackq delims=" %%A in ("c:\file.txt") do echo %%A https://www.cyberforum.ru/cmd-... 78462.html
  • Прочитать первую строку файла ссылка
  • Посчитать количество файлов ссылка
  • Встраивание ресурсов в бат-файл ссылка
  • Отслеживание изменений в дате создания файлов после последнего запуска батника BAT-файл для записи в лог имён и дат и времени изменения файлов, созданных после его же последнего запуска
  • Отслеживание изменений в содержимом папки и создание ярлыка к новым файлам ссылка
  • Как получить относительный путь к файлу ссылка
  • Фильтрация имен файлов, которые имеют 4-5 символов или заканчиваются на цифру ссылка
  • Получить путь на один уровень выше ссылка
  • Заметка о UNC-путях ссылка
  • Определить, пустая ли папка ссылка
  • О коротких именах файлов 8.3 - ссылка
  • Получение меток времени файловых объектов (дата создания/изменения(модификации)/доступа) ссылка
  • Разбор бинарного файла по байтам (Hex) ссылка
2
Эксперт WindowsАвтор FAQ
17589 / 7432 / 884
Регистрация: 25.12.2011
Сообщений: 11,227
Записей в блоге: 16
14.10.2012, 23:02  [ТС] 8
Фильтрация
  • Фильтрация текста по нескольким ключевым словам - ссылка

Resource Kit ссылка
  • Windows 2000 Server Resourse Kit MSDN
  • Windows 2003 Server Resource Kit MSDN
  • Windows XP SP2 Support Tools MSDN

Программы сторонних разработчиков
Windows GUI-программы и др. встроенные утилиты (параметры ком. строки) Ключи запуска программ, вспомогательные утилиты (Windows Resource Kit, Support Tools)
  • Telnet ссылка
  • Internet Explorer
  • RunDll32 BOOK
  • RegSvr32
  • Iexplorer (Проводник)
  • Winhlp32 (MS WinHelp)
Компиляторы:
  • Advanced Bat to EXE Converter Offsite
Отладчики кода

Альтернативные командные интерпретаторы
  • Console by Marko Bozikovic (Windows Console Alternative) SourceForge
  • AnsiCon "http://rubukkit.org/threads/Как-установить-ansicon-для-windows.5344/"

Сценарии для чистого DOS 6.22
  • DosBox и эмуляция запуска 16-битных приложений сборка
  • Русский текст ("патч" ega.cpi) ссылка
  • Вывести на экран последовательность чисел ссылка
  • Создать файл размером 1 MB ссылка
  • ANSI.SYS и ESC-последовательности ссылка


Принятые сокращения

MSDN - сайт Майкрософт (ссылка загрузки/ статья базы знаний)
Offsite - официальный сайт автора
Source - SourceForge или страница с исходным кодом
Site - статья на другом форуме
ALink - быстрый переход к месту в сообщении из этой темы
ссылка - ссылка на другую тему
VBS - решение на языке Visual Basic Script


Особая благодарность администраторам, модераторам и пользователям,
без которых создание этой темы было бы невозможно, чьи полезные ответы, постоянные подсказки и советы,
активное участие в помощи для раздела Batch позволили создать этот каталог: mik-a-el,
sov44, Anonymоus, bombus, Ris, gimntut, atributz, Isn, FraidZZ, Smitis, Charles Kludge, Badger, Somebody
и еще многие-многие-многие..., кого я не упомянул, и кто радовал своими знаниями, и пополнит наши ряды в будущем.
2
612 / 92 / 14
Регистрация: 15.08.2012
Сообщений: 62
15.10.2012, 04:35 9
Цитата Сообщение от Dragokas Посмотреть сообщение
Дата, время
• Получить текущую дату, время
Код
:: Получение даты\времени независимо от региональных настроек и формата
For /F "skip=1 tokens=1-6" %%A In (
'wmic Path Win32_LocalTime Get Year^,Month^,Day^,Hour^,Minute^,Second /format:table'
) Do (
	Echo Date in DD.MM.YYYY format:	%%F.%%D.%%A
	Echo Time in HH.MM.SS format:	%%B:%%C:%%E
)

:: Получение даты\времени из переменных, рассчитано на де-факто стандартные
:: на большинстве русскоязычных PC hh:mm:ss,ms и dd.mm.yyyy
For /F "tokens=1-6 delims=:., " %%A In ("%date% %time%") Do (
	Echo Date in DD.MM.YYYY format:	%%A.%%B.%%C
	Echo Time in HH.MM.SS format:	%%D:%%E:%%F
)
Цитата Сообщение от Dragokas Посмотреть сообщение
• Сложение времени
Отправлено в личку.

Цитата Сообщение от Dragokas Посмотреть сообщение
• Определить наличие подключения к сети интернет
Самое простейшее:
Код
ping google.ru -n 1 -w 1000>nul&&(Echo OK)||(Echo Check your connection)
Цитата Сообщение от Dragokas Посмотреть сообщение
• перекодировка текстов различных кодовых страниц
GNU Coreutils - iconv
Использование: iconv --help
Пример:
Код
iconv -f UTF-8 -t CP866 < 866.txt > 65001.txt
Добавлено через 47 минут
Цитата Сообщение от Dragokas Посмотреть сообщение
• Запущен ли процесс
Код
TaskList /FO:CSV|Find /I "firefox.exe">nul&&(Echo Firefox is running!)||(Echo Firefox not started

Цитата Сообщение от Dragokas Посмотреть сообщение
Завершить работу процесса
taskkill /?
Код
TaskKill /IM "firefox.exe"
Ещё иногда встречается нужда завершить все процессы, кроме определённых. Отправлено в личку.


Цитата Сообщение от Dragokas Посмотреть сообщение
• запись в переменную (в файл) специального символа
Знак процентов - удвоение.
* Пример c переменной: Set Progress=95%%
* Пример с файлом: Echo 50%%>file.txt
Пайп, перенаправление, объединение команд - экранирование через "^"
* Пример с переменной: Set "String=te^>st"
* Пример с файлом: Echo ^<^>^|^&>file.txt
Символ экранирования:
* Пример с переменной: Set "String=te^^st"
* Пример с файлом: Echo ^^>file.txt

Цитата Сообщение от Dragokas Посмотреть сообщение
• замена
%Переменная:Текст для замены=На что меняем%
Код
Set Text=12345679
Set Text=%Text:9=8%
Echo %Text%

Цитата Сообщение от Dragokas Посмотреть сообщение
• подсчет количества строк
Код
@Echo Off
Set i=0&For /F "usebackq" %%A In ("%~nx0") Do (Set /A i+=1)
Echo "%~nx0": %i% strings
Pause>Nul

Цитата Сообщение от Dragokas Посмотреть сообщение
• подсчет количества символов
Отправлено в личку. Для подсчета символов в ansi-файлах можно просто запросить их размер в байтах через модификатор z (For /?)
Если использовать внешние утилиты, то:
Код
@Echo Off
Set i=0&For /F "eol=" %%A In ('grep -Eo "." "%~nx0"') Do (Set /A i+=1)
Echo "%~nx0": %i% characters
Pause&Exit
Цитата Сообщение от Dragokas Посмотреть сообщение
• подсчет определенных знаков
Всё тот же grep:
Код
@Echo Off
Set Char=a
Set i=0&For /F "eol=" %%A In ('grep -Eo "%Char%" "%~nx0"') Do (Set /A i+=1)
Echo "%~nx0": %i% characters [%Char%]
Pause&Exit
7
Эксперт WindowsАвтор FAQ
17589 / 7432 / 884
Регистрация: 25.12.2011
Сообщений: 11,227
Записей в блоге: 16
16.10.2012, 06:30  [ТС] 10
Удалить файл или папку с некорректным именем

Удалить папку
Bash
rmdir /s "\\.\com\"
Удалить файл
Bash
del /f "\\.\com"
Описание принципа действия в этой теме.
2
Эксперт WindowsАвтор FAQ
17589 / 7432 / 884
Регистрация: 25.12.2011
Сообщений: 11,227
Записей в блоге: 16
12.11.2012, 09:17  [ТС] 11
Работа с переменной (урезание части строки, замена):
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Echo Off
:: Кодировка файла 'Кириллица DOS' (866)
Set var=123456789
Echo.
Echo                    Запись        Значение
Echo.
Echo Переменная полностью            %%var%%     %var%
Echo.
Echo Первые три символа         %%var:~0,3%%    %var:~0,3%
Echo Последние три символа           %%var:~-3%% %var:~-3%
Echo Три символа начиная с шестого     %%var:~5,3%%    %var:~5,3%
Echo Без первых трех символов      %%var:~3%%  %var:~3%
Echo Без последних трех символов        %%var:~0,-3%%   %var:~0,-3%
Echo Без первых двух и последних трех    %%var:~2,-3%%   %var:~2,-3%
Echo.
Echo Замена части переменной (45 на abc) %%var:45=abc%%  %var:45=abc%
Echo Замена части переменной и символов
Echo до нее (23, и все что до этого, на xyz)   %%var:*23=xyz%% %var:*23=xyz%
Echo Удаление части переменной (567)     %%var:567=%%    %var:567=%
Pause>Nul
Присвоение переменной первой строки файла:
Bash
Set /p X=<file.txt
echo %x%
Подсчет длинны переменной

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off 
Setlocal
set st=abcdefghijklmnopqrstuvwxyz
call :var_Count "%st%" count
echo %count%
exit /b
 
:var_count
set var=%~1
if not defined var exit /b
set var=%var:~1%
set /a %2+=1
call :var_count "%var%" %2
exit /b
Более безопасная и быстрая конструкция (умеет работать с кол-вом символом в переменной > 1000)
Bash
1
2
3
4
5
6
7
:var_count %1-in.Text %2.out.Len.of.Text
  set _var=%~1& set _count=0
  :_count_loop
  set _var=%_var:~1%
  set /a _count+=1
  if not defined _var (set %~2=%_count%& exit /b) else (goto :_count_loop)
Exit /B
Еще один вариант конструкции:
Bash
1
2
3
4
5
6
7
8
9
10
11
:var_count
::%1 - текст
::%2 - Переменная для хранения кол-ва символов в тексте
  set "_text=%~1"
  if "%_text%"=="" (set %~2=0& Exit /B)
  set _TCount=
  for /L %%C in (0,1,8184) do if "!_text:~%%C,1!"=="" (goto var_count_ext) else (set _TCount=%%C)
:var_count_ext
  set /A _TCount+=1
  set %~2=%_TCount%
Exit /B
Получить значение переменной окружения, заданной другой переменной

Bash
1
2
3
4
5
6
7
8
9
10
@echo off
set /p param=Введите имя переменной среды:
for /f %%a in ('call echo %%%param%%%') do (
  if "%%a"=="%%%param%%%" (
      echo Переменная не определена
    ) else (
      echo Переменная определена, ее значение равно %%a)
  )
)
pause>nul
Добавлено через 4 минуты
Удаление ярлыков с рабочего стола
(для Win XP и для Win7 обеих локализаций (англ, рус)

Bash
1
2
3
4
5
6
7
8
9
10
11
@echo off
chcp 1251
setlocal
set files=Русс.lnk 1111*.lnk *z.lnk
%homedrive%
if exist "%homedrive%%homepath%\desktop" (set homedesk=desktop) else (set homedesk=Рабочий стол)
if exist "%public%" (set comdesk=%public%\%homedesk%) else (set comdesk=%allusersprofile%\%homedesk%)
chdir "%homedrive%%homepath%\%homedesk%"
for %%a in (%files%) do (echo del /q "%%a"&echo del /q "%comdesk%\%%a" >nul)
endlocal
chcp 866
Добавлено через 2 часа 0 минут
Поместить программу в автозапуск

Bash
set proga=c:\tools\MyNotepad.exe
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v MyProg /t REG_SZ /d "%proga%" /f
Печать строки справа налево
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Echo Off
SetLocal enabledelayedexpansion
 
Call :RtoL "Stroka" Rev
Echo %Rev%
pause>nul
Goto :eof
 
:RtoL
Set Cnt=
Call :var_count "%~1" Cnt
set var=%~1
set Cnt-=1
Set %2=
for /L %%C in (%Cnt%,-1,0) do Set %2=!%2!!var:~%%C,1!
Exit /B
 
:var_count
set var=%~1
if not defined var exit /b
set var=%var:~1%
set /a %2+=1
call :var_count "%var%" %2
exit /b
5
886 / 188 / 16
Регистрация: 18.07.2011
Сообщений: 260
07.12.2012, 09:15 12
\Диски и разделы\Смонтировать папку (удаленный сетевой ресурс) на диск и назначить удобное имя

Иногда нужно открыть временный доступ множеству пользователей в сети к какой-нибудь сетевой папке.
Удобнее всего подключать сетевую папку как сетевой диск, но тогда имя сетевого диска может иметь вид:
budget$ на "Сервер с важными и не очень документами, которые храняться во временных сетевых папках (s1)" (X:)
Простому пользователю это название мало что скажет, а вот "Бюджет 2013 (X:)" более простое и ясное название для сетевого диска. В сети с Active Directory можно поместить следующий скрипт в автозагрузку при входе в систему.
Bash
1
2
3
4
5
6
7
8
set server=s1
set netfolder=budget$
set UncPath=\\%server%\%netfolder%
set RegKey=%UncPath:\=#%
REM net use x: /delete
net use x: "%UncPath%" /persistent:no
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\%RegKey%" /v "_LabelFromReg" /d "Бюджет 2013" /f
REM start x:\
Если Active Directory нет, то скрипт можно положить в сеть так, чтобы его все могли запускать.
Чтобы пользователь не запускал скрипт постоянно, можно поставить :yes вместо :no в 6 строке.
Возможно у пользователя уже есть сетевой диск X:, но указывающий на другую сетевую папку. Тогда нужно раскомментировать строку 5.
А если хочется, чтобы сетевой диск открылся сразу после подключения, то раскомментировать строку №8.
1
886 / 188 / 16
Регистрация: 18.07.2011
Сообщений: 260
13.12.2012, 16:07 13
Модификаторы значения аргумента.
Как аргумент передается путь к объекту (файлу или папке).
Пример вызова:
Цитата Сообщение от CMD
batnik.bat "c:\windows\media\tada.wav"
Или просто перетащите файл на такой батник.
batnik.bat
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
echo            Без кавычек : %~1 
echo     Полное имени файла : %~f1
echo       Только имя диска : %~d1
echo    Только путь к файлу : %~p1
echo       Только имя файла : %~n1
echo Расширение имени файла : %~x1
echo     Путь в формате 8.3 : %~s1
echo               Атрибуты : %~a1
echo    Даты /времени файла : %~t1
echo          Размера файла : %~z1
echo               Венегрет : %~ztasxnpdf1
pause
Модификаторы можно объединять.
Те же правила используются внутри цикла, например:
Bash
1
2
3
4
5
@echo off
for /F "delims=" %%A in ('dir c:\windows\media\*.wav /b /s') do (
  echo Имя файла с расширением : %%~nxA
)
pause
0
Эксперт WindowsАвтор FAQ
17589 / 7432 / 884
Регистрация: 25.12.2011
Сообщений: 11,227
Записей в блоге: 16
23.12.2012, 04:23  [ТС] 14
Получить случайное число в пределах ...

Мы знаем, что переменная %RANDOM% выводит значение в области от 0 до 32767,
а что если нам нужно диапазон уже, к примеру от -50 до 50? Вот решение:
Bash
1
2
3
4
5
6
7
@Echo Off
SetLocal
set min=-50
set max=50
set /a i=%random%%%(max-min+1)+min
Echo:%i%
pause>nul
Получить уникальное имя файла во временной папке
Bash
1
2
3
4
5
6
7
8
@echo off
Call :GetTemporaryName Name
Echo Temporary Name is %Name%
pause& exit
 
:GetTemporaryName %varName%
set sTempName=%temp%\temp%random%.tmp
if exist "%sTempName%" (goto :GetTemporaryName) else (set %1=%sTempName%)
2
1635 / 344 / 41
Регистрация: 15.10.2012
Сообщений: 532
29.12.2012, 15:07 15
Вывод текста без переноса на новую строку (другой вариант)
Bash
1
2
<nul set /p a=text
<nul set /p a=text
Ограничение - будет модифицирована переменная. Следует выбрать переменную, модификация которой не нарушит работу скрипта или использовать setlocal / endlocal
1
Эксперт WindowsАвтор FAQ
17589 / 7432 / 884
Регистрация: 25.12.2011
Сообщений: 11,227
Записей в блоге: 16
17.01.2013, 22:31  [ТС] 16
Сравнение без учета регистра букв
Для сравнения значений переменных между собой без учета регистра,
- добавим ключ /i к команде if

Bash
1
2
3
set a=test
set b=TEST
if /i %a%==%b% echo OK
Подпрограмма изменения регистра текста

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@echo off
Setlocal EnableDelayedExpansion
 
set Utext= Up case text--~@#*()_+-
Call :Case Utext U
echo %Utext%
 
set Ltext=lAW CASE TEXT--~@#*()_+-
Call :Case Ltext L
echo %Ltext%
 
pause
Goto :eof
 
:Case %1-var %2.option-L-or-U
if not Defined CaseA Call :FillSlovar
set word=!%~1!
if not Defined word Exit /B
set tempvar=
set /A n=-1
:newsymbol
set /A n+=1
set "symb=!word:~%n%,1!"
if "%symb%"=="" (Set "%~1=%tempvar%"& Exit /B)
if "!case%~2%symb%!"=="" (
  set "tempvar=%tempvar%%symb%"
) else (
  set "tempvar=%tempvar%!case%~2%symb%!"
)
goto :newsymbol
 
:FillSlovar
Set AlphabetL=abcdefghigklmnopqrstuvwxyz
Set AlphabetU=ABCDEFGHIJKLMNOPQRSTUVWXYZ
For /L %%C in (0,1,25) do (
  set caseU!AlphabetL:~%%C,1!=!AlphabetU:~%%C,1!
  set caseL!AlphabetU:~%%C,1!=!AlphabetL:~%%C,1!
)
Exit /B
1
Эксперт WindowsАвтор FAQ
17589 / 7432 / 884
Регистрация: 25.12.2011
Сообщений: 11,227
Записей в блоге: 16
18.01.2013, 00:46  [ТС] 17
Подпрограмма вычисления степени числа

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Echo Off
Setlocal EnableDelayedExpansion
Set /A num=3
::Вычисляем 3 в 4-й степени
Call :Stepping num 4
Echo %num%
pause
exit /B
 
:Stepping %1 - Переменная с числом %2 - Степень
set /A s=%2
if %s%==0 (Set /A %1=1& exit /b)
if %s%==1 exit /b
set step=%3
if not defined step set step=!%1!
set /A s-=1
set /A %1*=%step%
Call :Stepping %1 %s% %step%
exit /b
2
Pure Free Digital Ghost
4211 / 1671 / 323
Регистрация: 06.01.2013
Сообщений: 4,287
22.01.2013, 18:43 18
Проверка на содержание подстроки в строке.
Код:
Bash
1
2
3
4
5
6
7
8
:isin
set stroka=%~1
set podstroka=%~2
set f_=0
if "%stroka%"=="" (echo.Empty string & exit /b)
if "%podstroka%"=="" (echo.Empty 2nd string & exit /b)
echo.%stroka%|find "%podstroka%">nul && set f_=1
exit /b

__________
Синтаксис:
Bash
1
call :isin строка подстрока
Результат сохраняется в переменную "f_", если найдено - 1, если нет - 0.
В случае отсутствия строки или подстроки выводит соответствующее сообщение.

Добавлено через 21 минуту
ПыСы. Работает долго, поэтому не для использования внутри цикла

Добавлено через 2 минуты
А может просто ноут тормозит о_0
2
Pure Free Digital Ghost
4211 / 1671 / 323
Регистрация: 06.01.2013
Сообщений: 4,287
23.01.2013, 19:12 19
Цитата Сообщение от Dragokas Посмотреть сообщение
Клас
А что это? Виртуальная машина с х64?

Определение длины строки (более скорый вариант)

Требования

Bash
1
setlocal enabledelayedexpansion
КОД

Bash
1
2
3
4
5
6
7
:strlength
set string_q12e=%~1
set counter_0121=0
:again_r0067
if "!string_q12e:~%counter_0121%,1!"=="" (set strlength_=!counter_0121!&exit /b)
set /a counter_0121=!counter_0121!+1
goto :again_r0067
Синтаксис

Bash
1
call :strlength <Строка>
Значение возвращается в переменную strlength_

Используемые имена переменных и меток

Во избежание некорректной работы вашей программы нельзя использовать переменные counter_0121 и string_q12e, а также метки :strlength и :again_r0067

Добавлено через 55 минут
P.S. Пока писал - заметил: Проценты раскрываются раньше восклицательных знаков!
1
Эксперт WindowsАвтор FAQ
17589 / 7432 / 884
Регистрация: 25.12.2011
Сообщений: 11,227
Записей в блоге: 16
23.01.2013, 19:28  [ТС] 20
Цитата Сообщение от FraidZZ Посмотреть сообщение
А что это? Виртуальная машина с х64?
да нет, обычная Win7 x64. Просто запускал с AkelPad-a. который в свою очередь запущен с x64-редакции Total Commander. Вот наверно и подхватило другую среду. Хотя SysWOW64 - это вообще 32-разрядная папка. Странно, на рабочем компе это не воспроизводится.

Цитата Сообщение от FraidZZ Посмотреть сообщение
P.S. Пока писал - заметил: Проценты раскрываются раньше восклицательных знаков!
Да есть такое. Поэтому, если нужно получить значение переменной, имя которой частично или целиком состоит из значения другой переменной, такой порядок и используем:
Bash
1
2
3
4
setlocal enabledelayedexpansion
set num=1
set param1=test
set value=!param%num%!
или так:
Bash
1
2
3
set num=1
set param1=test
call set value=%%param%num%%%
Цитата Сообщение от FraidZZ Посмотреть сообщение
Определение длины строки
Писал такое уже, но на рекурсии: Каталог простых примеров решенных задач BAT/CMD, с чего начать (■■■ основная тема ■■■)

Цитата Сообщение от FraidZZ Посмотреть сообщение
нельзя использовать переменные counter_0121 и string_q12e
Используя Setlocal в подпрограмме и вот такой трюк, можешь избавится от этого недостатка:
Пример:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
set param=1
call :me "variable"
echo Value from sub=%variable%
::Проверяем изменилось ли значение переменной
echo Old value=%param% is saved !
pause
goto :eof
 
:me
setlocal
::Используем точно такое же имя переменной
set param=123
endlocal& set %~1=%param%
exit /b
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2013, 19:28

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

Запустить CMD окно указав текущий каталог из Bat
Добрый день. Подскажите, пожалуйста. Как установить текущий каталог в окне CMD? Я ожидал что...

Как скопировать файл в системный каталог посредством cmd/bat
Доброго всем времени суток. Наберитесь минутку терпения. Хочу передать всю интригу... Как же тут...

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

Не выполняется cmd\bat задача, через планировщик задач
Не выполняется cmd\bat задача, через планировщик задача (пишет что файл не найден), если запускать...

Приложение, генерирующее примеры, а в конце выдающее счетчик правильно решенных примеров
Здравствуйте, нужна помощь. Надо написать на Visual Basic программу, которая будет генерировать...

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


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

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

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