在记事本中打开ini文件和Config文件的VBScript

时间:2013-04-10 14:39:02

标签: windows networking vbscript config ini

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

我正在尝试创建一个可以在2个不同的记事本窗口中打开2个文件的VBS文件。第一个打开但pcview.cfg一直给我一个错误。我试图链接到HBOWEM32所指向的相同位置。谁能解决?出于安全考虑,我已经取出了网络驱动器的确切位置。下面的代码提示输入特定的文件夹名称,即旧的PC名称。输入该数据后,它会打开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""")

1 个答案:

答案 0 :(得分:2)

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

    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
    

    (未经测试,请小心)