我正在制作批量闹钟,但我需要一种方法来自动调高声音,所以我不需要。
警报的当前代码(如果您有任何其他改进,请随时提出建议)。
@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
答案 0 :(得分:3)
当然,这很粗糙,但确实有效。关键代码0xAF
是virtual key,用于增加音量。这里有一些JScript可以发送50次密钥代码。
var shl = new ActiveXObject("WScript.Shell");
for (var i=0; i<50; i++) {
shl.SendKeys(String.fromCharCode(0xAF));
}
您可以使用批处理+ 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。有关详细信息,请参阅this answer。
答案 1 :(得分:0)
http://gallery.technet.microsoft.com/scriptcenter/PowerShell-Set-PC-Volume-1737b160 您可以从批处理文件中调用此exe来控制音量。但我不确定你是否可以直接从批处理文件
进行