VBScript - 相对路径不起作用 [英] VBScript - relative path not working

查看:36
本文介绍了VBScript - 相对路径不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用相对路径从 VBscript 引用名为 wsusscn2.cab 的 cab 文件.由于某种原因,它不起作用.wsusscn2.cab 与脚本位于同一目录中.根据我读过的文档,这应该有效,但无效:

I'm trying to use a relative path to reference a cab file named wsusscn2.cab from a VBscript. For some reason, it's not working. The wsusscn2.cab is located in the same directory as the script. Based on the documentation I've read, this SHOULD work, but doesn't:

Set UpdateSession = CreateObject("Microsoft.Update.Session")
Set UpdateServiceManager = CreateObject("Microsoft.Update.ServiceManager")
Set UpdateService = UpdateServiceManager.AddScanPackageService("Offline Sync Service", "..\wsusscn2.cab")
Set UpdateSearcher = UpdateSession.CreateUpdateSearcher()

WScript.Echo "Searching for updates..." & vbCRLF

UpdateSearcher.ServerSelection = 3 ' ssOthers

UpdateSearcher.ServiceID = UpdateService.ServiceID

Set SearchResult = UpdateSearcher.Search("IsInstalled=0")

Set Updates = SearchResult.Updates

If searchResult.Updates.Count = 0 Then
    WScript.Echo "There are no applicable updates."
    WScript.Quit
End If

WScript.Echo "List of applicable items on the machine when using wssuscan.cab:" & vbCRLF

For I = 0 to searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    WScript.Echo I + 1 & "> " & update.Title
Next

WScript.Quit

产生这个错误:系统找不到指定的路径.

推荐答案

当我遇到这个问题时,我想知道这是否可能是服务权限与文件位置的关系,但不是,只需要绝对文件路径.

When I hit this, I wondered if it might've been service permissions vs file location, but nope, just absolute file paths needed.

我使用 FileSystemObject 的 GetAbsolutePathName 函数来确定完整路径,这允许您将随机的相对路径放入(如..\reports\something\blah.cab"或如果您愿意的话,只使用local.cab".)

I used the FileSystemObject's GetAbsolutePathName function to determine the full path, which allows you to throw random relative paths in (like "..\reports\something\blah.cab" or just "local.cab" if you so desire.)

Set fso = CreateObject("Scripting.FileSystemObject")
CabFileArg = Wscript.Arguments(0)  ' (cscript updatecheck.vbs wsusscn2.cab)
CabFileAbs = fso.GetAbsolutePathname(CabFileArg)

然后是通常的东西,只是使用 CabFileAbs.

Then the usual stuff, just using CabFileAbs instead.

Set UpdateSession = CreateObject("Microsoft.Update.Session")
Set UpdateServiceManager = CreateObject("Microsoft.Update.ServiceManager")
Set UpdateService = UpdateServiceManager.AddScanPackageService("Offline CAB", CabFileAbs , 1)
Set UpdateSearcher = UpdateSession.CreateUpdateSearcher()

……等等

这篇关于VBScript - 相对路径不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆