如何使用 VBS 捕获命令 window 的输出并通过播放的声音通知用户?
How to capture the output of command window using VBS and notify user with a played sound?
我已经成功地使用 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://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.
我还设法使用 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
现在,如何将这两者结合起来,让声音仅在控制台中显示 Import completed
消息时播放 window?
正如 Mofi 在评论中指出的那样,您可以禁用 All data at https://private.firebaseio.com/Jobs/Test will be overwritten.
提示,这样您就可以避免发送击键。您可以简单地使用 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
:
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
您可以在objWshShell.Run sCommand, 1, true
:
之后调用该子程序
objWshShell.Run sCommand, 1, true
PlaySound ("C:\Users\Zed\notify.mp3")
编辑
为了确定导入过程的结果,您可以将输出重定向到文本文件:
sCommand = "cmd /c firebase-import --service_account C:\Users --database_url https://firebaseio.com --json C:\Users\Zed\testing.json > C:\temp\output.txt"
然后您可以读取文件并查找 "Import Completed"
:
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
我已经成功地使用 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://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.
我还设法使用 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
现在,如何将这两者结合起来,让声音仅在控制台中显示 Import completed
消息时播放 window?
正如 Mofi 在评论中指出的那样,您可以禁用 All data at https://private.firebaseio.com/Jobs/Test will be overwritten.
提示,这样您就可以避免发送击键。您可以简单地使用 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
:
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
您可以在objWshShell.Run sCommand, 1, true
:
objWshShell.Run sCommand, 1, true
PlaySound ("C:\Users\Zed\notify.mp3")
编辑
为了确定导入过程的结果,您可以将输出重定向到文本文件:
sCommand = "cmd /c firebase-import --service_account C:\Users --database_url https://firebaseio.com --json C:\Users\Zed\testing.json > C:\temp\output.txt"
然后您可以读取文件并查找 "Import Completed"
:
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