Automation 如何使用VBS捕捉命令窗口的输出,并用播放的声音通知用户?
我已成功地使用VBS打开Automation 如何使用VBS捕捉命令窗口的输出,并用播放的声音通知用户?,automation,vbscript,Automation,Vbscript,我已成功地使用VBS打开cmd,将数据写入数据库并按两次Enter键 这是我的密码: Set wshshell = wscript.CreateObject("WScript.Shell") Wshshell.run "cmd" wscript.sleep 100 wshshell.sendkeys "firebase-import --service_account C:\Users --database_url https://fireb
cmd
,将数据写入数据库并按两次Enter键
这是我的密码:
Set wshshell = wscript.CreateObject("WScript.Shell")
Wshshell.run "cmd"
wscript.sleep 100
wshshell.sendkeys "firebase-import --service_account C:\Users --database_url https://firebaseio.com --json C:\Users\Zed\testing.json"
wscript.sleep 100
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
以下是控制台输出:
firebase-import --service_account C:\Users\Zed\private-firebase-adminsdk-private --path /Jobs/Test --database_url https://private.firebaseio.com --json C:\Users\Zed\testing.json
All data at https://private.firebaseio.com/Jobs/Test will be overwritten.
Press <enter> to proceed, Ctrl-C to abort.
Reading C:\Users\Zed\testing.json... (may take a minute)
Preparing JSON for import... (may take a minute)
Importing [==================================================] 100% (1/1)
Import completed.
firebase导入--服务\帐户C:\Users\Zed\private firebase adminsdk private--路径/作业/测试--数据库\ urlhttps://private.firebaseio.com --json C:\Users\Zed\testing.json
所有数据在https://private.firebaseio.com/Jobs/Test 将被覆盖。
按继续,按Ctrl-C中止。
正在阅读C:\Users\Zed\testing.json。。。(可能需要一分钟)
正在准备导入JSON。。。(可能需要一分钟)
导入[================================================================================================]100%(1/1)
导入已完成。
我还设法用VBS播放声音。代码如下:
Dim oPlayer
Set oPlayer = CreateObject("WMPlayer.OCX")
' Play audio
oPlayer.URL = "C:\Users\Zed\notify.mp3"
oPlayer.controls.play
While oPlayer.playState <> 1 ' 1 = Stopped
WScript.Sleep 100
Wend
' Release the audio file
oPlayer.close
Dim oPlayer
设置oPlayer=CreateObject(“WMPlayer.OCX”)
“播放音频
oPlayer.URL=“C:\Users\Zed\notify.mp3”
oPlayer.controls.play
而oPlayer.playState 1'1=已停止
WScript.Sleep 100
温德
'释放音频文件
oPlayer.close
现在,如何将这两者结合起来,使声音仅在控制台窗口中显示
导入完成
消息时播放?正如Mofi在评论中指出的,您可以随时禁用所有数据https://private.firebaseio.com/Jobs/Test 将被覆盖。
提示,可避免发送击键。您只需使用Windows脚本主机Run
方法:
Dim objWshShell
Dim sCommand
sCommand = "firebase-import --service_account C:\Users --database_url https://firebaseio.com --json C:\Users\Zed\testing.json"
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run sCommand, 1, True
您还可以将播放声音的代码包装成子文件
:
Sub PlaySound(p_sURL)
Dim oPlayer
Set oPlayer = CreateObject("WMPlayer.OCX")
' Play audio
oPlayer.URL = p_sURL
oPlayer.Controls.play
While oPlayer.playState <> 1 ' 1 = Stopped
WScript.Sleep 100
Wend
' Release the audio file
oPlayer.Close
End Sub
编辑
为了确定导入过程的结果,可以将输出重定向到文本文件:
sCommand = "cmd /c firebase-import --service_account C:\Users --database_url https://firebaseio.com --json C:\Users\Zed\testing.json > C:\temp\output.txt"
然后,您可以读取该文件并查找“导入已完成”
:
运行命令后,可以使用此子项:
objWshShell.Run sCommand, 1, true
CheckOutput
如果您阅读了本实用程序主页上仔细显示的
firebase import
文件,阅读“用法”部分后,您将节省大量时间:--强制在覆盖数据之前不要提示。
由于复制了输出文本,所以阅读也会很好,因为文本会再次节省您的时间,并且您会将最像的所有字符串设置为私有,而您不想将其公开。打开,运行where firebase import
并查看完整的限定文件名。我还没有安装这个实用程序。但是,如果输出文件名以.exe
结尾,则根本不需要执行cmd.exe
,因为可执行文件可以直接从Visual Basic脚本中执行。您可以使用该方法运行cmd.exe
或firebase import
(作为可执行文件时),并将bWaitOnReturn
设置为TRUE
。该方法将为您提供捕获输出的选项。
Sub CheckOutput()
Dim sOutput
Dim objFSO, objFileReader
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFileReader = objFSO.OpenTextFile("c:\temp\output.txt", 1)
sOutput = objFileReader.ReadAll
objFileReader.Close
If InStr(sOutput, "Import Completed") > 0 Then
PlaySound ("C:\Users\Zed\notify.mp3")
Else
PlaySound ("C:\Users\Zed\error.mp3")
End If
End Sub
objWshShell.Run sCommand, 1, true
CheckOutput