Некоторые интересные примеры исполняемых bat-файлов

bat-file-iconЗдравствуйте, уважаемые читатели блога MyFirstComp.ru. В сегодняшней статье я решил сделать небольшую подборку готовых bat-файлов, которые, на мой взгляд, довольно интересные, и могут пригодиться как новичкам, так и опытным пользователям. Напомню, чтобы создать bat-файл, необходимо открыть Блокнот, и скопировать туда содержимое, которое будет приведено ниже. После этого нажимаем Файл/Сохранить как, и присваиваем файлу расширение bat, например так: program.bat.

сохраняем как bat


Также можно запрограммировать выполнение «батника» на какой-то определенный день или время с помощью планировщика заданий.

Скажу сразу, что приведенные ниже примеры не претендуют на оригинальность и новизну, и, возможно, вы встречали их ранее. Но, тем не менее, я считаю их полезными, и хочу, чтобы вы с ними ознакомились. Надеюсь, авторы не будут против обнародования их интеллектуальной собственности:).

1. Получаем серийные номера всех съемных устройств и физических жестких дисков, а также имена разделов физических накопителей.

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
@echo off&:: by Alex Dragokas
Setlocal EnableDelayedExpansion EnableExtensions
Echo.
::Получаем PNPDeviceID и PhysicalDrive Name устройств, подключенных по интерфейсу USB
echo Перечень cъемных накопителей:
echo.
For /F "Skip=2 Tokens=2-4 delims=," %%i In (
  'WMIC DiskDrive Where InterfaceType^="USB" Get Name^,PNPDeviceID^,Model /Value /format:csv 2^>nul'
) do (
    Set AtLeastOneDevice=true
    Call :Get_USB_SN "%%k" Device_SN
    Call :GetPartition "%%j" Drives
    Echo Model: %%i
    Echo %%j
    Echo Disk^(s^):     !Drives!
    Echo Device S/N:         "!Device_SN!"
    Echo.
)
if not defined AtLeastOneDevice Echo Съемных USB накопителей не обнаружено.
Echo.
Echo Перечень жестких дисков:
Echo.
For /F "Skip=2 Tokens=2-4 delims=," %%i In (
  'WMIC DiskDrive Where "InterfaceType^!^='USB'" Get Name^,PNPDeviceID^,Model /Value /format:csv'
) do (
    Call :GetPartition "%%j" Drives
    Call :Get_HDD_SN "%%j" Device_SN
    Echo Model: %%i
    Echo %%j
    Echo Disk^(s^):     !Drives!
    Echo Device S/N:         "!Device_SN!"
    Echo "!Device_SN!">>%~dp0file.txt
    Echo.
)
pause>nul
Goto :eof
 
::Парсим часть с серийным номером устройства
:Get_USB_SN %1-in.PNPDeviceID %2-out.Device_S/N
  Set "%~2="
  Set "PNP=%~1"
  Set "PNP=%PNP:\=" "%"
  Set "PNP=%PNP:;=" "%"
  Set "PNP=%PNP:&=" "%"
  Set _Prev=
  For %%i in ("%PNP%") do (
    if "!_Prev:~0,4!"=="REV_" (Set "%~2=%%~i"& Exit /B)
    Set "_Prev=%%~i"
  )
  Exit /B
 
:Get_HDD_SN %1.in-PhysicalDrive_Name %2-out.Device_S/N
  Set "tag=%~1"
  Set "tag=%tag:\=\\%"
  For /F "UseBackQ skip=2 tokens=2 delims=," %%i In (
    `wmic path Win32_PhysicalMedia where "tag='%tag%'" Get SerialNumber /format:csv`
  ) do call set "_serial=%%i"
  ::Выше используется Call, чтобы удалить служебный символ 0x0D из переменной
  set "_serial=%_serial: =%"
  ::Проверяем признак 16-ричного кода (ответ длинной 40 символов)
  if "%_serial:~39,1%" neq "" Call :Hex_To_String "%_serial%" "_serial"
  set "%~2=%_serial%"
  Exit /B
 
:Hex_To_String %1-in.Reversed.Hex.Number %2-out.String
  SetLocal& set "x16=%~1"
  set n=45
  for %%A in (- . / 0 1 2 3 4 5 6 7 8 9) do set s.!n!=%%A& set /a n+=1
  set n=65
  for %%A in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do set s.!n!=%%A& set /a n+=1
  set n=97
  for %%A in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do set s.!n!=%%A& set /a n+=1
  set xs=
  for /L %%C in (0,4,8184) do (
    if "!x16:~%%C,1!"=="" goto _ex_Hex
    set /A cplus=%%C+2
    call set /A x10=0x%%x16:~!cplus!,2%%
    call set xs=!xs!%%s.!x10!%%
    set /A x10=0x!x16:~%%C,2!
    call set xs=!xs!%%s.!x10!%%
  )
  :_ex_Hex
  EndLocal& set "%~2=%xs%"& Exit /B
 
::Конвертация PhysicalDrive Name -> Partition Names -> Drive Names
  :GetPartition %1.in-PhysicalDrive_Name %2-out.Drive_Names
  Set "%~2="
  For /F "skip=2 delims==, tokens=3,6-7" %%i In (
    'WMIC path Win32_DiskDriveToDiskPartition get /format:csv'
  ) do (
    if %%i=="%~1" (
      For /F "skip=2 delims==, tokens=3-4,7" %%I In (
        'WMIC path Win32_LogicalDiskToPartition get Antecedent^,Dependent /format:csv'
      ) do (
        if "%%I,%%J"=="%%j,%%k" Set "%~2=!%~2! %%K"
  )))
  Exit /B

2. Определяем версию, разрядность и сборку операционной системы.

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
@echo off
SetLocal EnableExtensions
 
Call :GetSystemVersion "OSVer" "Core" "Build"
Echo Your operating system: %OSVer% %Core% %Build%
 
pause
goto :eof
 
:GetSystemVersion
:: Определить версию ОС
:: %1-исх.Переменная для хранения названия ОС
:: %2-исх.Переменная для хранения разрядности ОС
:: %3-исх.Переменная для хранения версии сборки ОС
  If /i "%PROCESSOR_ARCHITECTURE%"=="x86" (set %~2=x32) else (set %~2=x64)
  For /F "delims=" %%a in ('ver') do set _ver=%%a
  Set _ver="%_ver: =" "%"
  For %%a in (%_ver%) do set _ver=%%~a
  for /F "delims=]" %%a in ("%_ver%") do set %~3=%%a
  set _ver=%_ver:~0,3%
  SET %~1=Unknown
  if "%_ver%"=="5.0" SET %~1=Windows 2000
  if "%_ver%"=="5.1" SET %~1=Windows XP
  if "%_ver%"=="5.2" SET %~1=Windows 2003
  if "%_ver%"=="6.0" (
    Reg.exe query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName"|>nul Find /i "Vista"&&(
    SET %~1=Windows Vista) || (SET %~1=Windows 2008)
  )
  if "%_ver%"=="6.1" SET %~1=Windows 7
  if "%_ver%"=="6.2" SET %~1=Windows 8
  if "%_ver%"=="6.3" SET %~1=Windows 8.1
  set _ver=
Exit /B

3. Удаляем ярлыки с рабочего стола.

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

Оцените статью 1 Балл2 Балла3 Балла4 Балла5 Баллов (4 проголосовало, средняя оценка: 4,00 из 5)
Загрузка...

Оставить комментарий