Деякі цікаві приклади виконуваних bat-файлів


Написав admin. Опубліковано в рубриці Операційні системи

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 Перелік знімних накопичувачів: 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=%%~for a /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