标签: vbscript

vbscript 获取 XML 节点值并分配给变量

我正在读取一个 XML 文件,其中包含一组测试结果,如下所示:

<?xml version="1.0"?>
<testsuite>
  <build>
    <run>
      <test>
        <index>1</index>
    <id>1</id>
    <description>Description 1</description>
    <result>Pass</result>
  </test>
  <test>
    <index>2</index>
    <id>2</id>
    <description>Description 2</description>
    <result>Aborted</result>
  </test>
  <test>
    <index>3</index>
    <id>3</id>
    <description>Description 3</description>
    <result>Dependency</result>
  </test>
  <test>
    <index>4</index>
    <id>4</id>
    <description>Description 4</description>
    <result>Failed</result>
  </test>
</run>
</build>
</testsuite>
Run Code Online (Sandbox Code Playgroud)

我可以使用以下命令成功获取列出的节点:

 strQuery = "/testsuite/build/run/test/ (id|result)"
 Set nodeslist = xmlDoc.selectNodes(strQuery)
Run Code Online (Sandbox Code Playgroud)

我知道使用 for every 循环来获取节点值......

For Each objNode In nodeslist

'WHAT TO DO IN HERE...

Next
Run Code Online (Sandbox Code Playgroud)

但是,我现在陷入了需要使用 id 及其关联结果的地步。本质上,我将获取这些信息并将结果上传到测试系统,但目前我陷入了如何循环遍历 4 个单独的测试节点并挑选每个节点的 id 和结果,确保它们保持相互链接的问题即,如果将它们分配给 ID 和 RESULT 等变量,那么我可以在循环返回并将它们重新分配给下一个测试节点中的值之前执行上传操作。

非常感谢任何帮助。

xml vbscript

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

ASP Classic 下载文件脚本

我有一个用 ASP Classic 构建的网站,并且在使用允许用户下载文件但隐藏文件路径的脚本时遇到一些问题。

当用户在页面上时,他们将看到一个链接。该链接的编码如下:

<a href="download.asp?file=FILE-NAME-HERE" target="_blank">Download File</a>
Run Code Online (Sandbox Code Playgroud)

此链接将他们带到 download.asp,其中运行代码以获取文件并传送它。这是我现在的代码:

<%
const adTypeBinary = 1
dim strFilePath, strFile

strFilePath = "/_uploads/private/" 
strFile = Request.QueryString("file") 

if strFile <> "" then
    'Set the content type to the specific type that you are sending.
     Response.ContentType = "application/octet-stream"
     Response.AddHeader "Content-Disposition", "attachment; filename=" & strFile

     set objStream = Server.CreateObject("ADODB.Stream")
     objStream.open
     objStream.type = adTypeBinary
     objStream.LoadFromFile(strFilePath & strFile)

    response.binarywrite objStream.Read

    objStream.close
    Set objStream = nothing

end if
%>
Run Code Online (Sandbox Code Playgroud)

这段代码是我根据本网站上的两个问题(How to download the files using vbscript …

vbscript asp-classic

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

WScript Sendkey 不接受 Unicode 字符

我正在尝试使用 WScript Sendkeys 发送字符“\xc3\xa4”。似乎它不起作用。我发现一篇文章VBscript\'s SendKeys 支持 Unicode 吗?

\n\n

我的代码:

\n\n
Set sh = WScript.CreateObject("WScript.Shell")\nsh.Run "notepad.exe", 9\nWScript.Sleep 1000 \'wait a while to load notepad app\'\nsh.SendKeys " \xc3\xa4\xc3\xa4\xc3\xa4 Hello World!"  //buggy line\nsh.SendKeys "{ENTER}"\nWScript.Sleep 100\'\nsh.SendKeys "^p"\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我无法理解解决方案。如果您用简单的代码(用于解决方案)教我,那就太好了。我不擅长 WScript(因为这不是我的领域)。\n我知道我在乞求代码(请原谅我)。但请理解我的情况。

\n\n

提前谢谢了!!

\n

unicode vbscript wsh sendkeys

5
推荐指数
1
解决办法
1815
查看次数

手动打开excel文件允许运行公式,使用VBScript或PowerShell或Python的win32com打开excel文件则不允许

我遇到了脚本无法更新 Excel 文件的问题,我将其简化为以下问题:

如果我打开一个 Excel 文件,我可以转到“公式”选项卡并单击“立即计算”,它将花费一些时间更新所有计算。

如果我运行 VBScript只是为了打开文件(请参阅以下代码),如果我转到“公式”选项卡并单击“立即计算”,它将立即刷新并且不会发生任何变化。

Dim objXLApp, objXLWb, objXLWs

Set objXLApp = CreateObject("Excel.Application")
objXLApp.Visible = True
Set objXLWb = objXLApp.Workbooks.Open(file_path.xls)
Run Code Online (Sandbox Code Playgroud)

我尝试过各种各样的东西,例如:

objXLApp.Calculation = xlAutomatic
objXLApp.Calculate
objXLApp.CalculateFull
objXLApp.CalculateFullRebuild
objXLWb.RefreshAll
objXLWs.EnableCalculation = True
objXLWs.Calculate               
Run Code Online (Sandbox Code Playgroud)

但这些似乎与进入选项卡并单击“计算”执行相同的操作,导致快速刷新,并且 Excel 页面根本不尝试更新。

使用python的win32com模块时也是如此。我无法在打开的文件中运行计算。

import win32com.client as win32

excel = win32.Dispatch('Excel.Application')
excel.Visible = True
excel_workbook = excel.Workbooks.Open(file_path.xls)
Run Code Online (Sandbox Code Playgroud)

使用 PowerShell 也是如此。

$excel = New-Object -com excel.application
$excel.Visible = $True
$workbook = $excel.Workbooks.Open( $file_path )
Run Code Online (Sandbox Code Playgroud)

那么为什么用这些语言打开文件会以某种方式关闭计算公式的能力呢?

python vbscript excel winapi vba

5
推荐指数
1
解决办法
5315
查看次数

在所有窗口之上运行 hta

我有一个 HTML 应用程序,我想保留在所有窗口的顶部(也就是说,如果打开/切换到另一个窗口,我希望这个窗口覆盖它)。JavaScript 解决方案在 Windows 7/IE9 模式下不起作用(不确定是什么阻碍了它,也无法更改),而 VBScript 解决方案似乎要么彻底失败,要么依赖外部组件。我也无法使用模式对话框,因为我需要将其置于所有其他窗口之上,而不仅仅是其父窗口之上。

并且不要将其标记为/sf/ask/1717753761/的重复项,因为(不幸的是仍然未回答)问题是指在其他窗口之上打开,而不是维护堆栈位置。

我尝试过的:

  • 这里概述了其中的三项建议。
  • JavaScript 解决方案在这里
  • 这里有一点 VBScript 。
  • 上述每一项可能有十几个或更多个微妙的变化。

请记住,我无法下载额外的组件(没有 autoit 或 nircmd)。它应该全部集成到一个文件中,最好是 hta,但不是 zip。

我的解决方案

仅对 Teemu 的解决方案进行了轻微修改,主要是为了可移植性(以防万一)。

<script language="javascript">
    var locationstore = location.href
    [...]
    window.onload = function () {
        var shell = new ActiveXObject('WScript.Shell'),
            forceModal = function (e) {
                shell.Run(locationstore, 1, 0);
            };
        top.addEventListener('blur', forceModal, false);
        window.onbeforeunload = function () {
            window.removeEventListener('blur', forceModal, false);
        };
    };
</script>
Run Code Online (Sandbox Code Playgroud)

javascript vbscript hta

5
推荐指数
1
解决办法
6842
查看次数

如何在VB Script中延迟?

如何延迟 Vb 脚本?以下代码对我不起作用:

wscript.sleep 1000
Run Code Online (Sandbox Code Playgroud)
Delay 10

Sub Delay( seconds )
    Dim wshShell, strCmd
    Set wshShell = CreateObject( "Wscript.Shell" )
    strCmd = "%COMSPEC% /C (PING -n " & ( seconds + 1 ) & " 127.0.0.1 >NUL 2>&1 || PING -n " & seconds & " ::1 >NUL 2>&1)"
    wshShell.Run strCmd, 0, 1
    Set wshShell = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)
dim oshell 
set oshell = CreateObject("Wscript.Shell") 


obshell.run "%windir%\system32\rundll32.exe kernel32.dll Sleep 5000" 
Run Code Online (Sandbox Code Playgroud)

vbscript wsh delay setup-project visual-studio-2010

5
推荐指数
1
解决办法
5406
查看次数

ASP Classic VB 错误 800a01a8 需要对象

我正在尝试解决公司网站上的问题。有问题的页面是http://www.srbc.com/SiteMap.asp。尝试调用全局选项文件时出现以下错误:

Microsoft VBScript 运行时错误“800a01a8”需要对象:“/_Includes/Callout_Global.asp,第 40 行”

这是 /_Includes/Callout_Global.asp 文件中错误引用的行:

rs_main.open "Select TeamID, FirstName + ' ' + LastName as FullName from team where Category = 'Attorney' and IsActive = '1' Order by OrderNum"
Run Code Online (Sandbox Code Playgroud)

该代码控制应包含律师姓名列表的下拉框。

此代码在站点中的其他页面上运行良好(例如参见http://www.srbc.com/Careers/Default.asp)。

我不是编码员,只是想稍微清理一下这个网站。这是相当过时的代码,但任何关于我可以做些什么来解决这个问题的建议都将不胜感激。

SiteMap.asp 页面上调用此函数的代码如下所示:

<td width="210" valign="top" class="hideforprint">
<!--#include virtual="/_Includes/Callout_Global.asp" -->
</td>
<td width="20">&nbsp;</td>
</tr>
</table>
<table width="726" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="25"></td>
</tr>
</table>
</td>
<td width="22" valign="top" background="/Images/CommonImages/rightborder.gif">&nbsp;</td>
</tr>
</table>
<!--#include virtual="/_Includes/Footer.asp" -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

谢谢!

vbscript asp-classic

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

如何使 vbscript 弹出消息始终在顶部?

任何人都知道如何在所有内容之上而不是在后台制作一个 vbscript 弹出消息/框“生成”......?

这是我的脚本:)

Set objShell = WScript.CreateObject("WScript.Shell")
Const wshYes = 6 
Const wshNo = 7 
Const wshYesNoDialog = 4 
Const wshQuestionMark = 32 
intReturn = objShell.Popup("Vil du annulere shutdown?", _
    20, "Shutdown om 5 minutter!", wshYesNoDialog + wshQuestionMark) 
If intReturn = wshYes Then 
    Wscript.Echo "Shutdown annuleret." 
    objShell.Run "C:\ProgramData\AutoShutdown\Annuler.bat" 
End If 
Run Code Online (Sandbox Code Playgroud)

在VBScript中糟糕,我只是用我的批处理程序这个小部分。任何帮助表示赞赏!

vbscript

5
推荐指数
1
解决办法
5056
查看次数

Windows 脚本宿主的未来

Windows Script Host 的未来是什么?

微软已于 2015 年 5 月宣布在其新浏览器 Windows Edge 中终止 VBscript 和 ActiveX(顺便说一下,这对 Web 标准来说是个好消息)。但是,我无法找到有关脚本世界桌面部分的最新信息。我想知道下一个 Windows 桌面版本是否仍支持 VBscript、wscript.exe、cscript.exe 和 mshta.exe。我很担心,因为 Windows Script Host 引用日复一日地在 MSDN 库中越来越难找到。

我有很多 vbscript 和 hta 文件需要维护(在专业环境中),我需要预测是否很快需要迁移。

如果您有任何相关信息,请分享!

windows vbscript wsh hta

5
推荐指数
1
解决办法
960
查看次数

vbscript 连接到 sql server 运行查询将结果保存到 csv

我正在尝试创建一个连接到 sql server 的脚本,选择一些数据,并将结果保存到 csv。在 Sql Server 中启用了 Windows 身份验证。

这是我到目前为止所拥有的:

Dim connect, sql, resultSet, pth, txt

Set connect = CreateObject("ADODB.Connection")
connect.ConnectionString = "Provider=SQLOLEDB;Server=server\instance;Database=pm;Trusted_Connection=True;"
connect.Open

sql="SELECT col1, col2 FROM tbl1 order by col1, col2"

Set resultSet = connect.Execute(sql)

pth = "d:\test.csv"
Set txt = fs.CreateTextFile(pth, True)

On Error Resume Next
resultSet.MoveFirst
Do While Not resultSet.eof
  txt.WriteLine(resultSet(0) & "," & resultSet(1))
  resultSet.MoveNext
Loop

resultSet.Close
connect.Close
Set connect = Nothing
Run Code Online (Sandbox Code Playgroud)

我得到错误:

d:\vbs_test.vbs(5, 1) Microsoft OLE DB Provider for SQL Server: Invalid authorization …
Run Code Online (Sandbox Code Playgroud)

sql-server vbscript

5
推荐指数
0
解决办法
7869
查看次数