目前,当出现脚本错误时,WScript会弹出消息框.这些脚本由其他进程调用,并在服务器上运行,因此没有人可以忽略错误框.
我想要的是将错误消息转储到STDOUT,并执行以返回调用进程.弹出作为MSGBox只是挂起了整个事情.
想法?
我想编写一个自动加载网址(例如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
我正在尝试使用正则表达式从SQL语句中删除注释.
这个正则表达式几乎可以工作:
(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|'(?:[^']|'')*'|(--.*)
Run Code Online (Sandbox Code Playgroud)
除了最后一部分不能很好地处理" - "评论.问题是处理SQL字符串,用''分隔.
例如,如果我有
SELECT ' -- Hello -- ' FROM DUAL
Run Code Online (Sandbox Code Playgroud)
它不应该匹配,但它匹配.
这是在ASP/VBscript中.
我想过从右到左匹配,但我不认为VBScript的正则表达式引擎支持它.也试图摆弄负面的背后,但结果并不好.
美好的一天,
我正在创建一个VBScript函数来返回一个数组.但我想传递一个数组大小的参数.
Function CreateArray(arraySize)
Dim someArray(arraySize) ' EXPECTED INTEGER CONSTANT
For i = 0 to UBound(someArray)
someArray(i) = 5
Next
CreateArray = someArray
End Function
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
预期的整数常量
这可以在VBScript中做到吗?
TIA,
COSON
我正在尝试调试一些VBScript,通常我会安装古老的(但是免费的)Microsoft Script Debugger,它可以在32位XP和32位Windows 7上正常工作.
但是,在64位Windows 7上安装它之后,//d或者//x(或者甚至两者)都不再实际调用调试器.该脚本将很乐意运行,就像我从未提供过该选项一样 - 但这不是很有用.
有什么办法可以让它运作起来吗?我只是偶尔使用它来刮擦我自己的痒,所以我无法证明购买一些商业工具作为替代品.
我想要抑制可能出现在我的VBS登录脚本中的所有错误.
我可以用以下内容包围WHOLE 500行脚本:
On Error Resume Next
'[... whole script (~500 lines of code) ...]
On Error GoTo 0
Run Code Online (Sandbox Code Playgroud) 如果我将蝙蝠移动到其工作名称中没有空格的文件夹中,这就是我所拥有的并且无法让蝙蝠运行.我的问题是实际的蝙蝠在一个带空格的文件夹中,所以我需要这个才能工作.
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("%comspec% /K C:\Program Files\ping.bat"), 1, True
Run Code Online (Sandbox Code Playgroud) 我的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
64-bit ×1
automation ×1
debugging ×1
gpo ×1
playback ×1
powershell ×1
regex ×1
sql ×1
subst ×1
windows ×1
windows-7 ×1
wsh ×1