Tag: vbscript

什么是桌面path的环境variables?

我正在写一个Windowsbatch file,并希望将一些东西复制到桌面上。 我想我可以使用这个: %USERPROFILE%\桌面\ 但是,我在想,这可能只适用于英文操作系统。 有没有一种方法可以在batch file中执行此操作,该文件将适用于任何国际化版本? UPDATE 我试过下面的batch file: REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop FOR /F "usebackq tokens=3 skip=4" %%i in (`REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) DO SET DESKTOPDIR=%%i FOR /F "usebackq delims=" %%i in (`ECHO %DESKTOPDIR%`) DO SET DESKTOPDIR=%%i ECHO %DESKTOPDIR% 得到这个输出: S:\> REG QUERY“HKCU \ Software \ Microsoft […]

我可以将parameter passing给VBScript(用cscript启动的vbs文件)吗?

我有这个脚本保存在“test.vbs”: Set FSO = CreateObject("Scripting.FileSystemObject") Set File = FSO.OpenTextFile(workFolder &"\test.txt", 2, True) File.Write "testing" File.Close Set File = Nothing Set FSO = Nothing Set workFolder = Nothing 当我运行脚本时,我想传递“workFolder”variables的值。 我怎样才能做到这一点? 我可以做吗? 像“cscript test.vbs workFolder:'C:\ temp \'”也许? 奖金问题:是否需要用“Set workFolder = Nothing”清理传入的variables,或者VBSCript在终止时自动执行? 也许“Set File = Nothing”和“Set FSO = Nothing”也是不必要的? 如果你知道这两个问题的答案,请让我知道。

VBScript – 使用error handling

我想使用VBScript来捕获错误并logging它们(即错误“logging某事”),然后恢复脚本的下一行。 例如, 在错误恢复下一步 '做第一步 '做第二步 '做第3步 当步骤1发生错误时,我想让它logging该错误(或者执行其他自定义function),然后在步骤2继续。这是可能的吗? 我该如何执行? 编辑:我可以做这样的事情吗? 在错误恢复myErrCatch '做第一步 '做第2步 '做第3步 myErrCatch: '日志错误 继续下一步

在IE9中将Javascript从Javascript传递给VBScript

我有一个用VBScript编写的框架。 在这个框架里面的一些函数中,函数的参数在If语句中被检查为Nothing,然后执行一些动作。 使用JavaScript编写的框架的代码。 所以我需要传递Nothing来执行一些操作。 在IE8和更早的版本中工作的下一个方法: <script type="text/vbscript"> Function Test(val) If (IsNull(val)) Then Test = "Null" ElseIf (IsObject(val)) Then If (val Is Nothing) Then Test = "Nothing" End If End If End Function Dim jsNothing Set jsNothing = Nothing msgBox(Test(jsNothing)) msgBox(Test(Null)) </script> <script type="text/javascript"> alert(Test(jsNothing)); </script> 在IE <9输出将会:Nothing,Null,Nothing。 在IE9中:Nothing,Null,Null。 我怎样才能通过IE9的JavaScript从VBScript到VBScript? 对不起,我知道这很丑,但我被困住了。 而讨厌VBScript。 编辑:有一个框架function的例子。 我不能改变它,因为它在应用程序中被广泛使用。 Function ExampleFunction(val) […]

vbscript输出到控制台

使用vbscript输出结果到控制台的命令或最快的方法是什么?

如何在64位机器上以32位模式运行VBScript?

我有一个文本文件,以.vbs结尾,我写了下面的内容: Set Conn = CreateObject("ADODB.Connection") Conn.Provider = "Microsoft.ACE.OLEDB.12.0" Conn.Properties("Data Source") = "C:\dummy.accdb" Conn.Properties("Jet OLEDB:Database Password") = "pass" Conn.Open Conn.Close Set Conn = Nothing 当我在Windows 32位机器上执行它时,它运行并结束,没有任何概念(预期)。 当我在Windows 64位机器上执行此操作时,会出现错误 供应商无法find。 它可能没有正确安装。 但它被安装。 我认为问题的根源在于提供者是一个32位的提供者,据我所知它并不是以64位的forms存在的。 如果我通过IIS在64位机器上运行VBScript(作为ASP文件),我可以select它应该以32位模式运行。 它可以find提供者。 我怎样才能find在Windows 64位提供商? 我可以告诉CScript(它执行.vbs文本文件)以某种方式运行在32位模式?

如何在传统ASP上进行参数化SQL查询?

有人可以告诉我在VBscript中使用经典ASP执行参数化SQL查询最简单的方法吗? 一个可编辑的例子将是最好的。

VBscript代码捕获stdout,而不显示控制台窗口

这是一个VBScript代码示例,显示如何捕捉命令行程序发送到标准输出的任何内容。 它执行命令xcopy /? 并在消息框中显示输出。 在消息框出现之前,一会儿你会看到控制台窗口popup。 Set objShell = WScript.CreateObject("WScript.Shell") Set objExec = objShell.Exec("xcopy /?") Do line = objExec.StdOut.ReadLine() s = s & line & vbcrlf Loop While Not objExec.Stdout.atEndOfStream WScript.Echo s 这是另一个VBScript代码示例,显示如何执行脚本而不显示控制台窗口。 objShell.Run "c:\temp\mybatch.bat C:\WINDOWS\system32\cmd.exe", 0 要么 objShell.Run "c:\temp\myscript.vbs C:\WINDOWS\system32\cscript.exe", 0 正如你所看到的,它的forms是<script><space><executor> 。 最后一个示例使用objShell.Run而不是objShell.Exec 我不知道的是如何执行一个命令行程序(如果需要从一个batch file中),捕获标准输出,而不显示控制台窗口。 有任何想法吗?

通过VBScript调用WCF服务

有一个WCF服务的configuration: <services> <service name="MyService" behaviorConfiguration="MyServiceBehavior"> <endpoint binding="basicHttpBinding" contract="IMyService" /> <host> <baseAddresses> <add baseAddress="http://localhost:8001/MyService" /> </baseAddresses> </host> </service> </services> <behaviors> <serviceBehaviors> <behavior name="MyServiceBehavior"> <serviceMetadata httpGetEnabled="True" /> </behavior> </serviceBehaviors> </behaviors> 这个脚本应该叫它: Option Explicit Dim soapClient Dim serviceUri Dim serviceName Dim portName Dim result serviceUri = "http://localhost:8001/MyService" serviceName = "MyService" portName = "BasicHttpBinding_IMyService" Set soapClient = CreateObject("MSSOAP.soapClient") soapClient.ClientProperty("ServerHTTPRequest") […]

作为计划任务运行Microsoft Access

我正在寻求关于如何安排自动更新数据库(.accdb)的意见,因为我对自己设置的过程不太了解。 目前,它的工作原理如下: 任务计划程序调用.bat .bat调用.vbs .vbs打开数据库并调用一个macros macros调用一个函数(VBA级别) 该函数调用更新子程序 我认为有太多的步骤,而且它需要与数据库相关的两个外部文件(.Bat和.vbs),并且存储在系统中会增加程序中断的风险。 显然(但请告诉我,我错了,我怎么可以改变它).vbs不能调用一个子程序,但只有一个macros。 同样,如果用户希望进入数据库的VB环境,则访问macros不能调用子例程,而只能调用函数。 这就是为什么我调用函数(VBA Level)然后调用子程序的原因。 希望你们中的一些人知道如何缩短步骤,最终得到.bat和.vbs的搭档