目前,当出现脚本错误时,WScript会弹出消息框.这些脚本由其他进程调用,并在服务器上运行,因此没有人可以忽略错误框.
我想要的是将错误消息转储到STDOUT,并执行以返回调用进程.弹出作为MSGBox只是挂起了整个事情.
想法?
我将不得不处理经典ASP VBScript中的一些SQL代码.
我有两个问题.
首先,在.net中,我习惯使用System.Data.SqlClient命名空间对象来执行查询.例如:
Dim conn as New SqlConnection("Data Source=MyServer;uid=myUid;pwd=myPwd;Initial Catalog=myDataBase;"
Dim cmd as New SqlCommand("Select fname From myTable where uid=@uid;", conn)
cmd.Parameters.add(New SqlParameter("@uid",100323)
conn.open()
Response.Write(cmd.ExecuteScalar())
conn.Close()
Run Code Online (Sandbox Code Playgroud)
我被告知使用参数化查询可以使我的查询免受SQL注入攻击.
我想知道在使用VBScript的经典ASP中执行此类查询的等效代码是什么,以及必须使用哪些类似的安全预防措施来防止SQL注入.
我想编写一个自动加载网址(例如http://google.com)的脚本.但我不想在服务器上安装任何第三方库或程序.最简单的方法是什么?
我只是我的选项是批处理脚本,vb脚本或powershell对吗?
我正在使用VBScript,我的目标是能够用驱动器号代替我选择的路径.我需要D驱动器,如果它不可用,我需要检查它是否已经映射到正确的位置; 然后通知用户是否不是.我发现了这个:http://technet.microsoft.com/en-us/library/ee156605.aspx,我正在尝试调整他们的第二个例子:
Set objShell = WScript.CreateObject("WScript.Shell")
Set objExecObject = objShell.Exec("cmd /c ping -n 3 -w 1000 157.59.0.1")
Do While Not objExecObject.StdOut.AtEndOfStream
strText = objExecObject.StdOut.ReadLine()
If Instr(strText, "Reply") > 0 Then
Wscript.Echo "Reply received."
Exit Do
End If
Loop
Run Code Online (Sandbox Code Playgroud)
(我的改编):
Set objShell = WScript.CreateObject("WScript.Shell")
Set objExecObject = objShell.Exec("cmd /c substr")
strText = ""
Do While Not objExecObject.StdOut.AtEndOfStream
strText = strText & objExecObject.StdOut.ReadLine()
Loop
Wscript.Echo strText
Run Code Online (Sandbox Code Playgroud)
然后我可能会搜索告诉D驱动器映射位置的字符串.我也试过objShell.Exec("subst"),但我仍然没有得到任何输出.有没有人对我可能做错了什么有任何想法?或者有更好的方法来说明驱动器映射吗?谢谢,
213897
我喜欢脚本,我不喜欢重新发明轮子,所以我喜欢CreateObject
你能不能指出一个可以在VBScript上使用的简短描述的对象列表.真的,我没有找到超过50的网站.
提前致谢
Set wshShell = WScript.CreateObject ("WSCript.shell")
wshshell.run "runas ..."
Run Code Online (Sandbox Code Playgroud)
如何获取结果并显示在MsgBox中
我正在尝试编写一个vbscript来自动配置存储阵列.我在确定如何最好地导航XML方面遇到了一些困难.
我的XML的示例部分:
<SERVER>
<INTERFACE>
<PORT>0</PORT>
<IPADDRESS>192.168.1.1</IPADDRESS>
<NETMASK>255.255.255.0</NETMASK>
</INTERFACE>
<INTERFACE>
<PORT>1</PORT>
<IPADDRESS>192.168.1.2</IPADDRESS>
<NETMASK>255.255.255.0</NETMASK>
</INTERFACE>
</SERVER>
Run Code Online (Sandbox Code Playgroud)
所以我想迭代每个接口(实际上有5个)并在正确的接口上设置适当的IP和网络掩码.
我现在正在这样做:
Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.load("example.xml")
Set Root = objXMLDoc.documentElement
Set NodeList = Root.getElementsByTagName("interface")
port = 0
For Each Elem In NodeList
WScript.Echo "Port " & port & " has IP address of " & Elem.text
port = port + 1
Next
Run Code Online (Sandbox Code Playgroud)
但是必须有一个更干净的方法来做这个,我可以选择接口部分并读入端口,ipaddress和netmask,发出命令,然后进入下一个界面?
谢谢.
我正在尝试编写一个简单的脚本,它将发送CTRL+ WINDOWS KEY+的组合键TAB.下面的代码发送键CTRL+ ALT+TAB
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "^%{TAB}"
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试ALT用LWIN(也就是左键Windows键)替换"%"(也就是键)时,它会显示语法错误.
我试过以下,但没有运气:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "^{LWIN}{TAB}"
Run Code Online (Sandbox Code Playgroud)
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "^{LWIN}+{TAB}"
Run Code Online (Sandbox Code Playgroud)
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys ^{LWIN}+{TAB}
Run Code Online (Sandbox Code Playgroud)
我知道它与能够在按下其他按键时按住某些按键有关,但我似乎无法做到正确.
可以使用CTRL+ 以编程方式按下Windows键ESC.有没有办法将此组合设置为调用的变量LWIN,然后使用上述脚本之一?
我的VBScript没有显示我执行的任何命令的结果.我知道命令被执行但我想捕获结果.
我已经测试了很多方法,例如:
Const WshFinished = 1
Const WshFailed = 2
strCommand = "ping.exe 127.0.0.1"
Set WshShell = CreateObject("WScript.Shell")
Set WshShellExec = WshShell.Exec(strCommand)
Select Case WshShellExec.Status
Case WshFinished
strOutput = WshShellExec.StdOut.ReadAll
Case WshFailed
strOutput = WshShellExec.StdErr.ReadAll
End Select
WScript.StdOut.Write strOutput 'write results to the command line
WScript.Echo strOutput 'write results to default output
Run Code Online (Sandbox Code Playgroud)
但它不打印任何结果.如何捕捉StdOut和StdErr?
我正在批量制作游戏,我想在玩家"争斗"时播放音乐.我设法播放音乐,但是一旦玩家完成了战斗,我似乎无法停止音乐.
@echo off
set "file=BattleMusic.mp3"
( echo Set Sound = CreateObject("WMPlayer.OCX.7"^)
echo Sound.URL = "%file%"
echo Sound.Controls.play
echo do while Sound.currentmedia.duration = 0
echo wscript.sleep 100
echo loop
echo wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000) >sound.vbs
start /min sound.vbs'
Run Code Online (Sandbox Code Playgroud)
那是我的音乐剧本.关于如何在玩家完成后停止它的任何想法?
vbscript ×10
batch-file ×2
windows ×2
wsh ×2
asp-classic ×1
automation ×1
createobject ×1
keystroke ×1
playback ×1
powershell ×1
scripting ×1
sendkeys ×1
subst ×1
xml ×1
xmldom ×1