Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/1554: Рейтинг темы: голосов - 1554, средняя оценка - 4.50
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,909
Записей в блоге: 16
1

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

14.10.2012, 22:28. Просмотров 286914. Ответов 39

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

Правила и особенности темы
  • первый пост содержит четкую структуру категорий и будет наполняться ссылками на будущие примеры из этой темы, а также гиперссылками на другие темы в разделах 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 Кб, 210 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2012, 22:28
Ответы с готовыми решениями:

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

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

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

Как сделать "Панель задач" в две строки через реестр или скриптом bat/cmd?
Как сделать Панель задач в две строки... интересует вариант через реестр,...

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

39
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,909
Записей в блоге: 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
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,909
Записей в блоге: 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
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,909
Записей в блоге: 16
14.10.2012, 23:02  [ТС] 4
Кодировка
Комбинированные бат-файлы
Математические (арифметические) операции
Операционная система и другие устройства
  • Буфер обмена - чтение и запись ссылка
    - Окна
  • Определение класса окна ссылка
    - Работа с устройствами
  • devcon ссылка
    - Звук и видео
  • Говорящий батник =) ссылка
  • Воспроизведение звука в скрытом режиме тема
  • Открыть несколько медиа-файлов по указанному пути - ссылка
    - Клавиатура
  • Получение сканкодов клавиш ссылка
    - Мышь
  • Управление положением мыши на экране ссылка
  • Нажатие кнопки и сворачивание окна программы ссылка
    - Браузер
  • Запуск браузера в программе по-умолчанию ссылка
  • Добавление к IE надежных узлов и отключение элементов ActiveX ссылка
    - Интерфейс, настройки и твики, совместимость
  • Настройка совместимости приложения ссылка
  • Настройка быстродействия Тема1
  • Домашняя страница браузера Тема1
  • Панель быстрого запуска Тема1
  • Классическое меню пуск Тема1
  • Скрыть/Отобразить рабочий стол ссылка
    - Учетная запись (пользователи)
  • Выполнить Log Off другим учетным пользователям кроме своей учетки ссылка
  • Завершение терминальной сессии (Log off) конкретного пользователя ссылка
  • Получить SID текущего пользователя - ссылка
  • Перезапуск сеанса Windows ссылка
    - Файловая система
  • Рекомендации при повреждении системных файлов ссылка
  • Проверка свободного места на диске в cmd ссылка
    Офис - Службы
  • Настройка типа запуска службы ссылка
    - Ярлык
  • Создание ярлыка, чтение, изменение параметров ярлыка, изменение иконки ярлыка (vbs) ссылка
  • Запуск нескольких программ через один ярлык ссылка
    - Другое
  • Смена экранной заставки ссылка
  • Настройки параметров CMD через реестр ссылка
  • Отображение скрытых/системных файлов ссылка
2
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,909
Записей в блоге: 16
14.10.2012, 23:02  [ТС] 5
Память, версия ОС, конфигурация компьютера
  • Версия ОС, разрядность
  • Память, занимаемая процессом tasklist /? ссылка
  • Количество оперативной памяти, памяти видеокарты ссылка
  • Загруженность канала интернет ссылка
  • Информация о системе ссылка
  • Информация о процессоре, первый логический диск ссылка

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

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

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

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

Текстовые операции
  • Способы отображения содержимого текстового файла на консоли ссылка
  • поиск строки find, findstr Site ссылка
  • замена эта тема
  • парсинг http://www.cyberforum.ru/cmd-bat/thread778462.html
  • сортировка Sort /?
  • Проверка на содержание подстроки в строке эта тема эта тема
  • Определение длины строки эта тема
  • выборка, регулярные выражения Site
  • подсчет количества строк эта тема ссылка
  • Получить N-ю строку из файла - ссылка
  • подсчет символов эта тема (grep)
  • подсчет определенных знаков эта тема (grep)
  • Вывод на печать файла, начиная со строки с номером X, заканчивая номером Y ссылка ссылка ссылка
  • Изменение регистра текста эта тема
  • Сравнение без учета регистра букв эта тема
  • Вывод текста без переноса на новую строку эта тема
  • Получение части строки (урезание строки) эта тема
  • Печать строки справа налево эта тема
  • Стереть выведенный в консоли текст cls Часть текста - эта тема
  • Вырезать первые N строк из текстового файла и скопировать в другой - ссылка
  • Вывод последних N строк в текстовом файле ссылка
  • Регулярные выражения через FindStr ссылка
  • Регулярные выражения egrep, sed ссылка
  • Удаление пустых строк и строк, состоящих только из пробелов ссылка
  • Удаление строки из файла (указанной по номеру) ссылка
  • Удаление строки из текстового файла (по заданному слову) ссылка
  • Нумерация в конце строки ссылка
  • Добавление и удаление символа к каждой строке файла ссылка
  • В каждую строку перед первым словом добавить свой текст ссылка
  • Удаление строк из файла 1 которые содержатся в файле 2 ссылка
  • Поиск подряд ищущих символов в тексте и удаление таких строк ссылка
  • Удалить одинаковые слова (словосочетания) в одном текстовом файле ссылка
  • Выделить из текстового файла n-ую строку - ссылка
  • Поиск и замена в файле - ссылка
  • Цветной текст - ссылка ссылка ссылка
  • Вывод файла в одну строку ссылка
  • Запрет удаления пустых строк ссылка
3
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,909
Записей в блоге: 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 http://www.cyberforum.ru/cmd-bat/thread778462.html
  • Прочитать первую строку файла ссылка
  • Посчитать количество файлов ссылка
  • Встраивание ресурсов в бат-файл ссылка
  • Отслеживание изменений в дате создания файлов после последнего запуска батника BAT-файл для записи в лог имён и дат и времени изменения файлов, созданных после его же последнего запуска
  • Отслеживание изменений в содержимом папки и создание ярлыка к новым файлам ссылка
  • Как получить относительный путь к файлу ссылка
  • Фильтрация имен файлов, которые имеют 4-5 символов или заканчиваются на цифру ссылка
  • Получить путь на один уровень выше ссылка
  • Заметка о UNC-путях ссылка
  • Определить, пустая ли папка ссылка
  • О коротких именах файлов 8.3 - ссылка
  • Получение меток времени файловых объектов (дата создания/изменения(модификации)/доступа) ссылка
2
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,909
Записей в блоге: 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
Anonymоus
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
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,909
Записей в блоге: 16
16.10.2012, 06:30  [ТС] 10
Удалить файл или папку с некорректным именем

Удалить папку
Bash
rmdir /s "\\.\com\"
Удалить файл
Bash
del /f "\\.\com"
Описание принципа действия в этой теме.
2
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,909
Записей в блоге: 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
gimntut
879 / 182 / 15
Регистрация: 18.07.2011
Сообщений: 257
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
gimntut
879 / 182 / 15
Регистрация: 18.07.2011
Сообщений: 257
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
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,909
Записей в блоге: 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
Smitis
1629 / 338 / 39
Регистрация: 15.10.2012
Сообщений: 530
29.12.2012, 15:07 15
Вывод текста без переноса на новую строку (другой вариант)
Bash
1
2
<nul set /p a=text
<nul set /p a=text
Ограничение - будет модифицирована переменная. Следует выбрать переменную, модификация которой не нарушит работу скрипта или использовать setlocal / endlocal
1
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,909
Записей в блоге: 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
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,909
Записей в блоге: 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
Eva Rosalene
T for Trans-
4051 / 1590 / 303
Регистрация: 06.01.2013
Сообщений: 4,182
Завершенные тесты: 2
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
Eva Rosalene
T for Trans-
4051 / 1590 / 303
Регистрация: 06.01.2013
Сообщений: 4,182
Завершенные тесты: 2
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
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,909
Записей в блоге: 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
23.01.2013, 19:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2013, 19:28

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

Примеры решенных задач
Вот решил выложить программы с лабораторных работ: 1) Сгенерировать...

Сборник решенных задач
Здравствуйте! Вот тут меня посетила идея.Наверно не впервые я её озвучу, но всё...


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

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

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