是否可以制作批次,或者如果需要可以使用.vbs,是否可以通过标记,电池和音量使批处理中有一个小图标。
我希望它是“以xx分钟/小时关闭”,并且mayyybbe点击它会取消'它。
提前致谢:)
答案 0 :(得分:4)
嗯,我知道如何完成你想要的部分 - 通过借用PowerShell制作系统托盘气球提示。但我不知道如何让它听取解雇气球。也许其他人可以根据我的建议提出另一个答案?
无论如何,我使用这个转换脚本我将flac转换为mp3批量生成。随意为了你自己的邪恶目的而破解它。
@echo off
setlocal
for %%I in (*.flac) do (
rem // This initiates the systray balloon.
call :systray converting from "%%~nxI" to "%%~nI.mp3"
)
goto :EOF
rem // Here's the :systray function
:systray <message>
setlocal enabledelayedexpansion
set "args=%*"
set "args=!args:'=''!"
set "code="[void] [Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');^
$o=New-Object Windows.Forms.NotifyIcon;$o.Icon='%systemroot%\System32\PerfCenterCpl.ico';^
$o.BalloonTipIcon='Info';$o.BalloonTipText='!args!';$o.BalloonTipTitle='%~nx0';$o.Visible=1;^
$o.ShowBalloonTip(10000);Start-Sleep -M 12000;$o.Dispose();Exit""
start /b "" "powershell" %code%
endlocal & goto :EOF
$o.ShowBalloonTip(
n 1 )
和Start-Sleep -M
n中的 n 值 2 以毫秒为单位。盐味。
更新:我发现了一些关于注册$o.BalloonTipClicked
和lovely example in the wild的事件的信息。基本上,替换这个:
$o.ShowBalloonTip(10000);Start-Sleep -M 12000;$o.Dispose();Exit
......用这个:
$o.ShowBalloonTip(10000);register-objectevent $o BalloonTipClicked clicked;^
if (wait-event clicked -t 12) {$true} else {$false}; $o.Dispose(); Exit
您还需要在单线程公寓中执行powershell
才能使事件发挥作用。
start /b "" "powershell" -STA %code%
现在,您需要弄清楚如何在批处理过程中重新获得相关信息。首先,您可能无法再使用start /b
使气球提示无阻塞,并且您可能使用for /F
循环来捕获{{1}的输出命令。
除了您的后顾之忧,我建议“在xx分钟内关闭”并不完全是用户友好的。如果29分钟前出现“30分钟内关机”,但用户刚刚看到它怎么办? “在上午9:51关闭”可能会更好。
所以考虑到所有这些,因为你想要的是事件驱动,并且由于批处理语言不能轻易处理日期时间数学,我建议在PowerShell中完成该死的事情。使用powershell
扩展名保存此内容。右键单击并使用PowerShell运行。或者,如果您想从.ps1
控制台执行它,请执行cmd
。
powershell ".\scriptname.ps1"
Bill_Stewart,如果你正在读这篇文章,我知道你很高兴。碰巧,PowerShell确实是这次工作的正确工具。