Как я могу изменить громкость моего компьютера с помощью командного файла?
Я делаю пакетный сигнал, но мне нужен способ, чтобы включить звук автоматически, поэтому мне не нужно.
текущий код тревоги (если у вас есть другие улучшения, не стесняйтесь их предлагать).
@ECHO OFF
color 0a
cls
echo Ezlo alarm system
echo The curent time is: %time%
set /p INPUT=What time should the alarm be set for? (24hr)
:time
cls
echo Ezy alarm
echo The curent time is: %time%
Echo Alarm is set for %input%
if '%TIME%'=='%INPUT%' GOTO ALARM
GOTO time
:ALARM
ECHO get up!
start "D:\Users\nic\Desktop\ezlo alarm\alarmtone.mp3"
echo press space to close
PAUSE >nul
2 ответа
Конечно, это грубо, но это работает. Ключевой код 0xAF
это виртуальный ключ для увеличения громкости. Вот немного JScript, чтобы отправить этот код ключа 50 раз.
var shl = new ActiveXObject("WScript.Shell");
for (var i=0; i<50; i++) {
shl.SendKeys(String.fromCharCode(0xAF));
}
Вы можете включить это в свой пакетный скрипт, используя гибридный формат batch + JScript. Я также внес несколько других изменений в ваш скрипт, теперь вместо очистки экрана в каждом цикле выполняется обратный интервал и повторный вывод текущего времени, что делает сравнение времени математическим сравнением, чтобы разрешить ввод hh:mm
без необходимости указывать секунды и центсекунды, а в остальном просто немного полировать здесь и там.
@if (@a==@b) @end /*
:: batch portion
@ECHO OFF
setlocal
cls && color 0a
:: capture backspace character to %BS%
for /f %%a in ('"prompt $H&for %%b in (1) do rem"') do set "BS=%%a"
echo Ezlo alarm system
call :gettime now
echo The curent time is: %now%
set /p INPUT=What time should the alarm be set for? (24hr)
echo;
if "%now%" geq "%input%" (set tomorrow=1) else set tomorrow=
if defined tomorrow (
echo Alarm is set for %input% tomorrow.
) else echo Alarm is set for %input%.
set /p "=The curent time is: "<NUL
:time
call :gettime now
set /p "=%now%"<NUL
if "%now%" geq "%INPUT%" (
if not defined tomorrow GOTO ALARM
) else if defined tomorrow set tomorrow=
ping -n 2 0.0.0.0 >NUL
call :len %now% len
for /l %%I in (1,1,%len%) do set /p "=%BS%"<NUL
GOTO time
:ALARM
echo;
ECHO get up!
cscript /nologo /e:jscript "%~f0"
start "" "D:\Users\nic\Desktop\ezlo alarm\alarmtone.mp3"
echo press space to close
PAUSE >nul
color 07
exit /b
:gettime <varname>
set "gtvarnow=%time:~0,-3%"
set "%~1=%gtvarnow: =%"
goto :EOF
:len <string> <varname>
set len=0
set str=%~1
:len_loop
if defined str (
set "str=%str:~1%"
set /a "len+=1"
goto :len_loop
) else set "%~2=%len%"
goto :EOF
:: JScript portion */
var shl = new ActiveXObject("WScript.Shell");
for (var i=0; i<50; i++) {
shl.SendKeys(String.fromCharCode(0xAF));
}
К сожалению, нет простого способа программно определить, отключен ли системный том. Конечно, есть ключевой код для переключения приглушения, но нет простого программного способа проверить, нужно ли его запускать или нет. Если вам нужен ваш скрипт, чтобы система не отключалась, самое простое решение - использовать стороннюю утилиту, такую как NirCmd. Смотрите этот ответ для деталей.
http://gallery.technet.microsoft.com/scriptcenter/PowerShell-Set-PC-Volume-1737b160 вы можете вызвать этот exe-файл из вашего пакетного файла для управления громкостью. Но я не уверен, что вы можете сделать это прямо из командного файла