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

Полезные BAT/CMD скрипты

15.10.2012, 00:56. Просмотров 321154. Ответов 160

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

Также приветствуются скрипты высокой степени сложности, полезные с точки зрения
изучения принципа их работы.

Правила темы:
  • При выкладывании скрипта постарайтесь тщательно описывать принцип его работы и по-больше комментировать строки Вашего кода.
  • Код, состоящий из > 4 строк, помещайте под теги [SPOILER="Развернуть код..."]Ваш код[/SPOILER]. Также можно сделать 2 варианта: 1. Чистый код. 2. С комментариями.
  • Запрещаются любые обсуждения выложенных здесь работ;
  • если в этом есть необходимость, создайте отдельную тему в которой опишите замечание или проблему при работе с данным скриптом, указав ссылку на сообщение из этой темы (правый клик по слову "Permalink" вверху каждого сообщения).
  • Если Вы хотите внести исправление в выложенный Вами код - пишите мне в личку ссылку на Ваше старое сообщение и новый исправленный вариант. (полный вариант с тегами Вашего старого сообщения можно получить, нажав на него - кнопка "Цитата").
  • Допускается размещение обзора программ, помогающих редактировать/отлаживать код.


Схожая тема: BAT/CMD файлы
Смежная тема: Полезные VBS скрипты и программы по работе с ними
Ссылка на набор полезных скриптов (предыдущая шапка от bombus) BAT/CMD файлы


******************* Перечень полезных скриптов: *******************

Архивация и резервное копирование
Создание CAB-архивов ссылка

Безопасность
Удаление последствий вируса (фейковые папки на флешке) ALINK
Стать владельцем папки/файла, получить полные права (пункт контекстного меню (Reg-файл) ALINK
Смена владельца и прав на папку и ее содержимое, в которой запущен батник (Full Access <-> Read Only) ссылка

Дата, время
Конвертация даты/времени из/в UNIX-формат(в секундах после 1-янв-1970 00:00:00) ссылка

Интерфейс
Крутящаяся палка (имитация) ссылка
Вызов GUI диалогового окна выбора папки ссылка
Разноцветный вывод в консоли. ссылка Цветная роза. ссылка
Диалоговое меню выбора файла ссылка

Компиляция
Помощник компиляции исходных кодов С# (.cs) через консольный NET.FrameWork компилятор ссылка

Операционная система
Восстановление шрифтов после сбоя ссылка
Пищалка (сигнал встроенного динамика, подобие Beep) ссылка
Регистрация всех библиотек DLL и OCX ссылка
Проверка целостности системных файлов утилитой sfc /scannow с выводом лога и автоопределением месторасположения диска ссылка

Сеть
Подсчёт маски подсети на основании двух крайних значений диапазона. ALINK
Пакетное получение информации о IP-адресах и построение HTML-отчёта. ALINK
GetIP/GetMAC/Get default gateway ссылка

Процессы
Завершение процесса (с листингом и выбором через меню) ссылка
Многопроцессное создание пустых файлов (бенчмарк для винчестера) ссылка
Отслеживание зависшего процесса и его перезапуск с указанным приоритетом ссылка
Process Change Monitor (мониторинг и протоколирование изменений в списке запущенных процессов) ссылка

Текстовые операции, кодировка
Вывод текста без переноса на новую строку ALINK
Перекодировка CP OEM-866 <-> WIN-1251 - 1) CMD 2) VBA 3) ASM (exe+src) ссылка
Помощь по всем командам вашей версии Windows / DOS ссылка
Транслитерация файлов, в именах которых есть кириллица (файловые операции) ссылка
Преобразование текстового файла в кодировку Unicode (файловые операции) ссылка
Перекодировщик Reversed Hex в символьную строку ссылка

Файловые операции, разделы
Взаимное копирование содержимого 2 папок друг в друга ALINK
Прогресс-бар копирования файлов ссылка
Циклическое копирование файлов по каталогам с ожиданием завершения их дозаписи в исходную папку. ссылка
Создание нуль-копии папки для выкладывания на форуме ссылка
Получение серийного номера всех съемных устройств и физических жестких дисков (не разделов). Получение имен разделов физических накопителей (кроме оптических). ссылка

Другое
Расчёт индекса массы тела и идеального веса ссылка
19
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2012, 00:56
Ответы с готовыми решениями:

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

Меню в BAT/CMD
Вопрос от полного ламера. У меня такая проблемма надо сделать меню в CMD чтобы...

несколько заданий на CMD/BAT
очень прошу, помогите с этими задачками :(... 1.Напишите командный...

Специальные символы в CMD/BAT
Добрый вечер. Вопрос по поводу специальных символов в BAT: &lt; , &gt; , &gt;&gt; , /? ,...

Переименовать файл (CMD/BAT)
как удалить из названия файла ненужную информацию 1)пробел 2)фигурную скобку...

160
alpap
1574 / 1229 / 399
Регистрация: 26.04.2015
Сообщений: 4,320
07.01.2018, 00:35 141
мой вариант:
Windows Batch file
1
2
3
4
@echo off
for /f "tokens=1* delims==" %%a in ('"wmic path win32_localtime get Day,Month,Year,Hour,Minute,Second /value|find "^=""') do set "%%a=0%%b"
echo %Year:~-5%.%Month:~-3%.%Day:~-3%-%Hour:~-3%'%Minute:~-3%'%Second:~-3%
pause& exit
1
Dragokas
Эксперт WindowsАвтор FAQ
17026 / 7083 / 856
Регистрация: 25.12.2011
Сообщений: 10,906
Записей в блоге: 16
07.01.2018, 22:46  [ТС] 142
Каталог простых примеров решенных задач BAT/CMD, с чего начать (■■■ основная тема ■■■)
1
Maks
Модератор
Эксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
3808 / 1913 / 254
Регистрация: 13.03.2013
Сообщений: 8,731
Записей в блоге: 4
23.01.2018, 11:44 143
Узнать модель материнской платы или нутбука

Windows Batch file
1
2
3
4
5
6
7
8
9
@echo on
 
::определить производителя материнской платы или ноутбука
wmic baseboard get Manufacturer
 
::определить модель материнской платы или ноутбука
wmic baseboard get product
 
pause


Узнать версию BIOS

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo on
 
::отобразить общую информацию о материнской плате компьютера
WMIC BASEBOARD list brief 
 
::отобразить сведения о производителе BIOS
wmic bios get Manufacturer
 
::отобразить версию BIOS
wmic bios get smbiosbiosversion
 
::отобразить описание производителя BIOS
wmic bios get Description
 
pause
1
vavun
9836 / 5208 / 799
Регистрация: 07.04.2013
Сообщений: 15,170
23.01.2018, 11:45 144
Maks, https://blogs.technet.microsoft.com/...-wmic-queries/
0
Maks
Модератор
Эксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
3808 / 1913 / 254
Регистрация: 13.03.2013
Сообщений: 8,731
Записей в блоге: 4
23.01.2018, 11:48 145
vavun, это конечно познавательно, но большую половину команд лично я не использую в своей работе.
Скрипты, которые я выложил, оптимизируют работу в том плане, что не нужно скидывать крышку системника, или переворачивать ноутбук, чтобы узнать точную модель.
А ведь ее еще нужно переписать на бумажку и вбить в поисковик.
Данные скрипты упраздняют это действие.
0
greg zakharov
Покинул форум
2070 / 845 / 245
Регистрация: 07.05.2015
Сообщений: 1,686
09.02.2018, 22:04 146
Похоже вопросами о запуске чего-либо без попапа UAC на форумах будут донимать многих. Поправить ситуацию можно следующим батей (run.cmd):
Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
  setlocal
    set "i=0"
    for %%i in (%*) do set /a "i+=1"
    if %i% neq 1 echo:Index is out of range.&goto:eof
    set "__COMPAT_LAYER=RunAsInvoker"
    start "" %1
  endlocal
exit /b
В итоге:
Код
E:\sandbox> run.cmd regedit
Однако это вовсе не значит, что UAC похачен (почему, догадайтесь сами).
Вообще, чтобы не заморачиваться с батниками, можно просто нарисовать макрос:
Код
[cmd.exe]
    run=if "$1" neq "" set "__COMPAT_LAYER=RunAsInvoker"&start "" $1&set __COMPAT_LAYER=
В консоли набрать:
Код
E:\sandbox> doskey /macrofile=E:\config\macro.lst
И пользоваться по мере надобности:
Код
E:\sandbox> run regedit
0
vavun
9836 / 5208 / 799
Регистрация: 07.04.2013
Сообщений: 15,170
09.02.2018, 22:31 147
Твик в догонку Принудительный запуск с обычными правами exe файла требующего прав администратора
0
YuS_2
Любознательный
855 / 565 / 181
Регистрация: 10.03.2016
Сообщений: 1,291
10.02.2018, 08:08 148
Цитата Сообщение от greg zakharov Посмотреть сообщение
Похоже вопросами о запуске чего-либо без попапа UAC на форумах будут донимать многих. Поправить ситуацию можно следующим батей
Кстати, по этому поводу есть ещё варианты, причем без макросов:
https://ss64.com/nt/syntax-uac.html
и описание некоторых недокументированных переменных:
https://ss64.com/nt/syntax-variables.html
0
greg zakharov
10.02.2018, 16:22
  #149

Не по теме:

vavun, YuS_2, ссылки это хорошо, ибо по инету самому искать что-то не охота. Вот поэтому и занимаюсь реверсингом, а про UAC - из разряда "накипело". YuS_2, по ссылкам, правда, ничего нового, даже удивило, что там не описано с пяток недокументированных переменных, которые, правда, работают только в Windows >= 8.

0
Dragokas
12.02.2018, 10:27  [ТС]
  #150

Не по теме:

greg zakharov, а что там подобавляли?

0
greg zakharov
Покинул форум
2070 / 845 / 245
Регистрация: 07.05.2015
Сообщений: 1,686
11.03.2018, 15:54 151
Сложно соотнести то, о чем речь пойдет далее, к какой-либо категории. Это скорее just for fun или easter egg, - как бы ни было, но перевернуть мировоззрение отдельного индивида, по крайней мере ни разу не державшего в руках Debugging Tools, сие может точно. Наибольший эффект достигается на топовых версиях Windows. Нам понадобятся Debugging Tools (желательно иметь опыт работы с оными), опционально - sed. Для начала заглянем в документацию по команде vertarget:
Цитата Сообщение от Debugging Tools for Windws
...
The vertarget command displays the current version of the Microsoft Windows operating system of the target computer.
...
Имеются в виду крэшдампы. Теперь цепляемся к командной строке как к дампу, и вызываем упомянутую ранее команду.
Windows Batch file
1
E:\sandbox> cdb -z %comspec% -c "vertarget;q"
А в чем, собственно, прикол? Отсеиваем лишнее:
Windows Batch file
1
E:\sandbox> cdb -z %comspec% -c "vertarget;q" | findstr /irc:"ver" | sed $!d
2
aiv3006
2 / 2 / 0
Регистрация: 17.05.2015
Сообщений: 64
17.03.2018, 21:46 152
Цитата Сообщение от Dragokas Посмотреть сообщение
Крутящаяся палка.zip
Не качается ни один зип !

 Комментарий модератора 
Загружайте изображения на форум
0
magirus
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
27957 / 15678 / 959
Регистрация: 15.09.2009
Сообщений: 67,825
Записей в блоге: 78
18.03.2018, 07:21 153
все качается.
0
aiv3006
2 / 2 / 0
Регистрация: 17.05.2015
Сообщений: 64
18.03.2018, 09:54 154
Цитата Сообщение от magirus Посмотреть сообщение
все качается.
Не поленился видео скрин снял посмотри если не веришь [ссылка удалена]
0
Joey
Форумчанин
943 / 564 / 220
Регистрация: 05.05.2015
Сообщений: 3,254
Записей в блоге: 2
20.03.2018, 16:08 155
aiv3006, материалы выкладывайте на форум
0
vavun
9836 / 5208 / 799
Регистрация: 07.04.2013
Сообщений: 15,170
20.03.2018, 16:26 156
Вангую - чел увлекся настройками приватности и выключил лишнего.

Добавлено через 21 секунду
Joey, советую вынести в новую тему
1
Joey
Форумчанин
943 / 564 / 220
Регистрация: 05.05.2015
Сообщений: 3,254
Записей в блоге: 2
20.03.2018, 16:32 157
vavun, вопросы вроде по теме, думаю подождать, пока проблема решится, и поудалять как чистка темы
0
vavun
9836 / 5208 / 799
Регистрация: 07.04.2013
Сообщений: 15,170
20.03.2018, 16:36 158
Joey, ну тогда верни удаленную ссылку
Если там вдруг фаерфокс, то я даже точно скажу, что нужно включить
0
greg zakharov
Покинул форум
2070 / 845 / 245
Регистрация: 07.05.2015
Сообщений: 1,686
28.03.2018, 17:56 159
Пример декодирования бинарного представления строки
Для чего нужно? Допустим токен от какого-то сервиса отдается последним пользователю в виде строки из нулей и единиц (хотя фактически это может быть тот же base64 и иже с ним) или значение какого-то параметра реестра (есть такие, правда крайне мало) и т.д. Допустим, есть у нас строка "011101010111001101100101011100100011101001110000011000010111001101110011". Можете сказать что в ней записано?
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
  setlocal enabledelayedexpansion
    set "str=011101010111001101100101011100100011101001110000011000010111001101110011"
    set "i=0"
    :loop
      set "oct=!str:~%i%,8!"
      set "bin=%oct%"
      set "dec="
      for /l %%i in (1, 1, 32) do (
        if defined bin (
          set /a "dec=(dec<<1)|!bin:~0,1!"
          set "bin=!bin:~1!"
        )
      )
      cmd /c exit /b %dec%
      set "res=!res!!=exitcodeascii!"
      if defined oct set /a "i+=8"&goto:loop
    echo:%res%
  endlocal
exit /b
0
greg zakharov
Покинул форум
2070 / 845 / 245
Регистрация: 07.05.2015
Сообщений: 1,686
24.05.2018, 13:39 160
Вчера, сегодня, завтра...
На форуме бывают проскакивают темы касательно дат, и чаще всего эти вопросы сопряжены с получением даты, к\от которой нужно прибавить\вычесть определенное количество дней, а основным пожеланием является "чтоб все было на бат". На форуме уже есть решение задачи с использованием mshta, но до кучи хотелось бы привести решение на самом командном языке, безо всяких "хаков" и гибридизации. Идея до безобразия проста (и наверняка не нова) - конвертировать дату в т.н. julian day number, сделать необходимые сложение или вычитание, а затем снова вернуть все на свои места. В переводе на командный язык это можно представить так:
Windows Batch file
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
@echo off
  setlocal
    rem Завтра
    call:shiftDate %date% + 1
    echo:%day%
    rem Вчера
    call:shiftDate %date% - 1
    echo:%day%
  endlocal
exit /b
 
:toJulianDay
  set /a "jdn=(1461*(%3+4800+(%2-14)/12))/4+(367*(%2-2-12*((%2-14)/12)))/12-(3*((%3+4900+(%2-14)/12)/100))/4+%1-32075"
exit /b
 
:fromJulianDay
  set /a "a=jdn+32044, b=(4*a+3)/146097, c=a-146097*b/4, d=(4*c+3)/1461, e=c-1461*d/4, m=(5*e+2)/153"
  set /a "dd=e-(153*m+2)/5+1, mm=m+3-12*(m/10), yy=100*b+d-4800+m/10"
  if %dd% lss 10 set "dd=0%dd%"
  if %mm% lss 10 set "mm=0%mm%"
  set "day=%dd%.%mm%.%yy%"
exit /b
 
:shiftDate
  set "d=%~1"
  2>nul set /a "dd=%d:~0,2%, mm=%d:~3,2%, yy=%d:~6,4%"
  call:toJulianDay %dd% %mm% %yy%
  set /a "jdn%~2=%~3"
  call:fromJulianDay
exit /b
Еще примеры использования:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
@echo off
  setlocal
    call:shiftDate 28.02.2018 + 1
    echo:%day%
 
    call:shiftDate 01.01.2019 - 1
    echo:%day%
  endlocal
exit /b
 
...
В принципе можно заимствовать формат даты из реестра и на его основе переводить также даты прочих культур. Это - всего лишь пример.
2
24.05.2018, 13:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2018, 13:39

Сортировка по времени в bat/cmd
сабж в папке А лежит bat, который в папке Б сортирует все файлы по времени и...

zenity.exe в bat\cmd
Приветствую всех! Гуру помогите разобраться, решил вот использовать утилиту...

Не запускаются ни bat, ни cmd файлы...
Стоит WinXP SP3. В общем захожу в любой bat и cmd файл, а мне все время пишет:...


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

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

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