标签: vbscript

CScript/WScript防止错误被阻止

目前,当出现脚本错误时,WScript会弹出消息框.这些脚本由其他进程调用,并在服务器上运行,因此没有人可以忽略错误框.

我想要的是将错误消息转储到STDOUT,并执行以返回调用进程.弹出作为MSGBox只是挂起了整个事情.

想法?

vbscript automation wsh

6
推荐指数
1
解决办法
8903
查看次数

从Windows Server 2008上的脚本打开URL

我想编写一个自动加载网址(例如http://google.com)的脚本.但我不想在服务器上安装任何第三方库或程序.最简单的方法是什么?

我只是我的选项是批处理脚本,vb脚本或powershell对吗?

vbscript powershell batch-file

6
推荐指数
2
解决办法
2万
查看次数

在VBScript中获取命令行输出(无需写入文件)

我正在使用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

windows vbscript subst drive-mapping

6
推荐指数
1
解决办法
4万
查看次数

正则表达式从SQL语句中删除注释

我正在尝试使用正则表达式从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的正则表达式引擎支持它.也试图摆弄负面的背后,但结果并不好.

regex sql vbscript

6
推荐指数
2
解决办法
6174
查看次数

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

6
推荐指数
1
解决办法
8421
查看次数

如何让Microsoft Script Debugger与64位Windows 7一起使用?

我正在尝试调试一些VBScript,通常我会安装古老的(但是免费的)Microsoft Script Debugger,它可以在32位XP和32位Windows 7上正常工作.

但是,在64位Windows 7上安装它之后,//d或者//x(或者甚至两者)都不再实际调用调试器.该脚本将很乐意运行,就像我从未提供过该选项一样 - 但这不是很有用.

有什么办法可以让它运作起来吗?我只是偶尔使用它来刮擦我自己的痒,所以我无法证明购买一些商业工具作为替代品.

debugging vbscript 64-bit windows-7

6
推荐指数
1
解决办法
2万
查看次数

抑制整个脚本的错误

我想要抑制可能出现在我的VBS登录脚本中的所有错误.

我可以用以下内容包围WHOLE 500行脚本:

On Error Resume Next

'[... whole script (~500 lines of code) ...]

On Error GoTo 0
Run Code Online (Sandbox Code Playgroud)

error-handling vbscript gpo

6
推荐指数
1
解决办法
1万
查看次数

文件路径中有空格的VBS

如果我将蝙蝠移动到其工作名称中没有空格的文件夹中,这就是我所拥有的并且无法让蝙蝠运行.我的问题是实际的蝙蝠在一个带空格的文件夹中,所以我需要这个才能工作.

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("%comspec% /K C:\Program Files\ping.bat"), 1, True
Run Code Online (Sandbox Code Playgroud)

vbscript

6
推荐指数
1
解决办法
2万
查看次数

WScript.Shell.Exec - 从stdout读取输出

我的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)

但它不打印任何结果.如何捕捉StdOutStdErr

vbscript

6
推荐指数
1
解决办法
1万
查看次数

声音分批?

我正在批量制作游戏,我想在玩家"争斗"时播放音乐.我设法播放音乐,但是一旦玩家完成了战斗,我似乎无法停止音乐.

@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 batch-file playback

6
推荐指数
1
解决办法
342
查看次数