我有一个工作的hta,可以用vbscript唤醒/重新启动/关闭多个计算机。一个选择下拉菜单,带有3个按钮执行3个不同的功能。
主HTA:
<select name="Control_PC">
<option value="0" selected>Select Computer</option>
<option value="1">PC1</option>
<option value="2">PC2</option>
<option value="3">PC3</option>
<input type="button" value="WAKE UP" onClick="executewake">
<input type="button" value="RESTART" onClick="executereboot">
<input type="button" value="SHUTDOWN" onClick="executeshutdown">
</select>
使用vbscript:
' SELECTION REBOOT PCs
Sub executereboot
if Control_PC.value = 1 then
Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -r -t 01 -m \PC1"
Shell.Run command, 1, false
Elseif Control_PC.value = 2 then
Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -r -t 01 -m \PC2"
Shell.Run command, 1, false
Elseif Control_PC.value = 3 then
Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -r -t 01 -m \PC3"
Shell.Run command, 1, false
end if
End Sub
' SELECTION SHUTDOWN PCs
Sub executeshutdown
if Control_PC.value = 1 then
Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -s -t 01 -m \PC1"
Shell.Run command, 1, false
Elseif Control_PC.value = 2 then
Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -s -t 01 -m \PC2"
Shell.Run command, 1, false
Elseif Control_PC.value = 3 then
Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -s -t 01 -m \PC3"
Shell.Run command, 1, false
end if
End Sub
' SELECTION WAKE PCs
Sub executewake
if Control_PC.value = 1 then
Set Shell = CreateObject("Wscript.Shell") : command = "toolswol.exe 10604B7609CE"
Shell.Run command, 1, false
Elseif Control_PC.value = 2 then
Set Shell = CreateObject("Wscript.Shell") : command = "toolswol.exe 10604B7609F2"
Shell.Run command, 1, false
Elseif Control_PC.value = 3 then
Set Shell = CreateObject("Wscript.Shell") : command = "toolswol.exe 10604B7E829B"
Shell.Run command, 1, false
end if
End Sub
现在,我知道如何使用一个值在JavaScript中使用一个按钮创建选择选项:
<select id="Control_PC">
<option value="" selected>Select Computer</option>
<option value="shutdown -r -t 01 -m \PC1">PC1</option>
<option value="shutdown -r -t 01 -m \PC2">PC2</option>
<option value="shutdown -r -t 01 -m \PC3">PC3</option>
<input type="button" value="Reboot" onClick="runSelection(document.getElementById('Control_PC').value)">
</select>
但是如何使用JavaScript创建三个按钮以与VBScript版本相同,并具有优雅的解决方案,该解决方案将使用所有唤醒/重新启动/关闭命令作为一个函数中的不同值,例如:
选择计算机PC1PC2PC3
任何帮助将不胜感激:(
谢谢大卫
,似乎您可以通过将变量发送到您所调用的函数来完成您想要做的事情。
例如,您可以将MAC地址设置为选择框的值:
<select name="Control_PC">
<option value="" selected>Select Computer</option>
<option value="10604B7609CE">PC1</option>
<option value="10604B7609F2">PC2</option>
<option value="10604B7E829B">PC3</option>
</select>
然后,您可以将每个按钮设置为使用您想做的操作的参数调用相同的功能,例如:
<input type="button" value="WAKE UP" onClick="RunSelection('wake')">
<input type="button" value="RESTART" onClick="RunSelection('restart')">
<input type="button" value="SHUTDOWN" onClick="RunSelection('shutdown')">
然后,您可以根据该参数的值和选择框的值配置该VBScript函数以执行特定的操作。这样:
Sub RunSelection(strAction)
If Control_PC.selectedIndex = 0 Then MsgBox "Select a computer.",vbExclamation : Exit Sub
pcName = Control_PC.Options(Control_PC.selectedIndex).innerText
macAddress = Control_PC.value
Select Case strAction
Case "wake"
strCommand = "toolswol.exe " & macAddress
Case "restart"
strCommand = "shutdown -r -t 01 -m \" & pcName
Case "shutdown"
strCommand = "shutdown -s -t 01 -m \" & pcName
End Select
MsgBox "Running command: " & strCommand
End Sub
有很多方法可以做您想做的事情,但这应该可以帮助您开始。
编辑OP的评论:
我认为您要做的是这样的。
<select name="Control_PC">
<option value="" selected>Select Computer</option>
<option restart="shutdown -r -t 01 -m \PC1" shutdown="shutdown -s -t 01 -m \PC1" >PC1</option>
<option restart="shutdown -r -t 01 -m \PC2" shutdown="shutdown -s -t 01 -m \PC2" >PC2</option>
<option restart="shutdown -r -t 01 -m \PC3" shutdown="shutdown -s -t 01 -m \PC3" >PC3</option>
</select>
<input type="button" value="Restart" onClick="RunSelection(Control_PC.Options(Control_PC.selectedIndex).getAttribute('restart'))">
<input type="button" value="Shutdown" onClick="RunSelection(Control_PC.Options(Control_PC.selectedIndex).getAttribute('shutdown'))">
本质上,您正在创建自定义属性并为其分配一个值。
Control_PC.Options(Control_PC.selectedIndex)
将获得所选选项,getAttribute
将获得您指定的属性的值。