Другие примеры bat/cmd файлов
Определение разрядности операционной системы
IF %PROCESSOR_ARCHITECTURE% == x86 (
if %PROCESSOR_ARCHITEW6432% NOT DEFINED ( set os=32 )
) else ( set os=64 )
echo %os%
--------------------------------------------------------------------------------------------------
Определение даты биоса
rem Written by Rob van der Woude
rem Idea by ComputerHope
rem http://www.computerhope.com/rdebug.htm
:: Create temporary DEBUG script to read BIOS date
> BIOSDATE.DBG ECHO D FFFF:0005 L 8
>> BIOSDATE.DBG ECHO Q
for /f "tokens=9 delims= " %%I in ^
( 'DEBUG ^< BIOSDATE.DBG ^| FIND "/"' ) do ( set DTBIOS=%%I )
echo BIOS date: %DTBIOS%
Здесь возможно обойтись без промежуточного файла BIOSDATE.DBG
for /f "tokens=9 delims= " %%I in ^
( '^(ECHO D FFFF:0005 L 8 ^& ECHO Q ^) ^| DEBUG ^| FIND "/"' ) ^
do ( set DTBIOS2=%%I )
echo BIOS date: %DTBIOS2%
--------------------------------------------------------------------------------------------------
Пинг подсети
Для получения списка активных IP подсети необязательно пользоваться сетевыми сканерми. В большинстве случаев достаточно выполнить bat файл:
@echo off
setlocal enabledelayedexpansion
for /l %%I in (1,1,254) do (
1>nul ping -n 1 192.168.1.%%I && echo IP 192.168.1.%%I - OK
)
--------------------------------------------------------------------------------------------------
Выгрузить файл по FTP
Для выгрузки файла arhive.zip, лежащего по локальному адресу d:\toupload на ftp.celitel.info в папку на сервере folders с логином и паролем для доступа по FTP login и password следует выполнить скрипт:
(
echo login
echo password
echo lcd d:\oupload
echo cd folders
echo send arhive.zip
echo bye
)>ftp.txt
ftp -s:ftp.txt ftp.celitel.info
del ftp.txt /q
Ознакомиться с подкомандами FTP можно, например,
тут
--------------------------------------------------------------------------------------------------
Определение свободного места на томе
@echo off
setlocal ENABLEEXTENSIONS
call :kBytesFree
pause
exit
:kBytesFree drive ret -- returns the free space of
:: a drive in kilobytes
:: -- drive [in] - drive letter, default is c:
:: - ret [out,opt] - varref returns number of bytes free
:$created 20060101 :$changed 20080219 :$categories FileInfo
:$source http://www.dostips.com
SETLOCAL
SET "drive=%~1"
IF "%drive%"=="" SET "drive=C:"
FOR /f "tokens=3 delims= " %%a ^
in ('"dir %drive%\|find /i "bytes free""') do set free=%%a
IF "%free%"=="" (
FOR /f "tokens=3 delims= " %%a in ^
('"dir %drive%\|find /i "байт свободно""') do set free=%%a
)
SET "free=%free:,=%" &rem eleminate commas in number
SET "free=%free:.=%" &rem eleminate dots in number
SET "free=%free: =%" &rem eleminate blank in number
SET "free=%free:~0,-3%" &rem divide by 1000 by cutting
rem off the last 3 digits
( ENDLOCAL & REM RETURN VALUES
IF "%~2" NEQ "" (SET "%~2=%free%") ELSE echo.%free%
)
EXIT /b
--------------------------------------------------------------------------------------------------
Получение случайного числа из заданного диапазона
Переменная %random% дает случайное десятичное число в интервале от 0 до 32767. Для получения числа в требуемом диапазоне следует выполнить несложные арифметические действия:
SET /A RND=%MIN%+(%MAX%-%MIN%+1)*%random%/32768
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).
Новый раздел о средствах командной строки в рамках этого же проекта расположен здесь