任务栏上的批处理图标消息

时间:2015-05-27 10:29:14

标签: batch-file vbscript

是否可以制作批次,或者如果需要可以使用.vbs,是否可以通过标记,电池和音量使批处理中有一个小图标。

我希望它是“以xx分钟/小时关闭”,并且mayyybbe点击它会取消'它。

提前致谢:)

1 个答案:

答案 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.BalloonTipClickedlovely 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确实是这次工作的正确工具。