0

我在医院环境中工作,现在我正在做 PC 部署。部分部署要求我们查看网络驱动器上的 2 个文件,以查找有关旧系统的信息。他们使用特定的端口和/或 TTY 来查看每个部门的信息。

我正在尝试创建一个可以在 2 个不同的记事本窗口中打开 2 个文件的 VBS 文件。第一个打开但 pcview.cfg 不断给我一个错误。我试图链接到 HBOWEM32 指向的同一位置。谁能解决?出于安全原因,我已取出网络驱动器的确切位置。下面的代码提示输入一个特定的文件夹名称,它是旧的电脑名称。输入该数据后,它会很好地打开 HBOWEM32 文件,但说找不到另一部分。我已经手动查看了文件夹内部并且 pcview.cfg 文件确实存在。我只是想要一种更快的方法来打开这些,而不是通过运行提示进行暴力破解。

这是代码。

CONST strDir = "<Netowrk Location)"
Dim WshShell

set objShell = CreateObject("WScript.Shell")
set objFSO = CreateObject("Scripting.FileSystemObject")

function findFolder(strDir, strFlag)
    set objFolder = objFSO.GetFolder(strDir)
    for each objSubFolder in objFolder.SubFolders
        if (inStr(objSubFolder.Name, strFlag)) then
            findFolder = objSubFolder.Path
            exit function
        else        
            findFolder = findFolder (objSubFolder.Path, strFlag)
        end if
   next
end function

strFlag = inputBox("Enter Computer Name:")
strWeb = findFolder(strDir, strFlag) & "\HBOWEM32.ini"
objShell.Run strWeb

Set WshShell = CreateObject ("WScript.Shell")
WshShell.Run ("notepad.exe """ + "\\<same location as above>\Pcview.cfg""")
4

1 回答 1

2
  1. 使用选项显式
  2. 不要创建你不使用的变量(WshShell、objShell)
  3. 改进您的变量名称(strFlag 似乎是计算机名称,strWeb 似乎是文件的完整规范)
  4. 不要将不同的信息集中到一个变量中(strWeb 包含要重用的文件夹路径和特定的文件名)
  5. 使用诊断输出(至少在开发时)

在代码中:

Option Explicit
...    
Dim strComputer : strComputer = InputBox("Enter Computer Name:")
Dim strFolder   : strFolder   = findFolder(strDir, strComputer) 
Dim strIniFSpec : strIniFSpec = objFSO.BuildPath(strFolder, "HBOWEM32.ini")
WScript.Echo "will run '" & strIniFSpec & "'"
objShell.Run strIniFSpec

Dim WshShell    : Set WshShell = CreateObject("WScript.Shell")
Dim strCfgFSpec : strCfgFSpec  = objFSO.BuildPath(strFolder, "Pcview.cfg")
Dim strCmd      : strCmd       = "notepad.exe """ & strCfgFSpec & """"
WScript.Echo "will run '" & strCmd & "'"
WshShell.Run strCmd

(未测试,请慎重)

于 2013-04-10T15:10:46.287 回答