如何解决在msgbox中执行cmd命令
所以,我的目标是要获得一个msgBox,它可以告诉我我正在执行什么电源计划,而无需使用命令提示符。
start cmd /k powercfg/getactivescheme
当我尝试从命令提示符处执行操作时,它只会在msg框中输出命令文本,而不是实际输出。
msg %username% powerconfg/getactivescheme
预先感谢
解决方法
尝试这样(使用for
将命令输出到变量中):
@echo off
for /f "tokens=* delims= " %%a in ('powercfg /getactivescheme') do msg * %%a
使用VBScript MsgBox的一个更好的示例,它可以具有自定义标题和图标:
@echo off
for /f "tokens=* delims= " %%a in ('powercfg /getactivescheme') do set "body=%%a"
echo MsgBox "%body%",64,"YOUR TITLE" >temp.vbs
cscript //nologo temp.vbs
del temp.vbs
,
您也可以尝试使用此批处理文件:
@echo off
Set Title="command in a msgbox"
Title %Title%
@for /f "delims=" %%a in ('powercfg /getactivescheme') do (Set "MSG=%%a")
>"%temp%\%~n0.vbs" ( echo MsgBox "%MSG%",vbInformation,%Title% )
wscript "%temp%\%~n0.vbs" & Del "%temp%\%~n0.vbs"
编辑:如果要在两个括号( Data Info....)
之间提取数据,则可以使用处理正则表达式的vbscript像这样:
例如,在我用法语计算机( Utilisation Normale )
进行的测试中
@echo off
Set Title="command in a msgbox"
Title %Title%
@for /f "delims=" %%a in ('powercfg /getactivescheme') do (Set "MSG=%%a")
Call :ExtractData "%MSG%" MSG
>"%temp%\%~n0.vbs" ( echo MsgBox "%MSG%",%Title% )
Wscript.exe "%temp%\%~n0.vbs" & Del "%temp%\%~n0.vbs"
Exit
REM------------------------------------------------------------------------
:ExtractData
(
echo wscript.echo Extract("%~1"^)
echo Function Extract(Data^)
echo Dim strPattern,oRegExp,Matches
echo strPattern = "(?:\()(.*)(?:\))"
echo Set oRegExp = New RegExp
echo oRegExp.IgnoreCase = True
echo oRegExp.Pattern = strPattern
echo set Matches = oRegExp.Execute(Data^)
echo If Matches.Count ^> 0 Then Extract = Matches(0^).SubMatches(0^)
echo End Function
)>"%tmp%\%~n0.vbs"
@for /f "delims=" %%a in ('cscript //nologo "%tmp%\%~n0.vbs"') do ( set "%2=%%a")
If Exist "%tmp%\%~n0.vbs" Del "%tmp%\%~n0.vbs"
Exit /B
REM------------------------------------------------------------------------
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。