从ini文件中读取数据

2024-04-09

我有一个需要输入文件名的 vbscript

代码是

 Dim tsout: Set tsout = gofs.CreateTextFile("C:\....csv")
 Dim tsin: Set tsin = gofs.OpenTextFile("C:\.....csv")

我该如何配置这个路径createTextFile(....)从配置文件中读取(.ini)

用于创建和写入输出的文件路径必须取自ini file

这是我的 ini 文件

//我的ini文件

[Read_file]
tsout=E:.....tt.csv
tsin=E:\....gt.csv

    [col]
Number1=4
Number2=5

.ini 文件解析器的简单版本:

Option Explicit

Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")

'WScript.Quit demoReadFile()
WScript.Quit demoReadIniFile()

Function demoReadFile()
  demoReadFile = 0
  Dim tsIn : Set tsIn = goFS.OpenTextFile(".\21825192.ini")
  Do Until tsIn.AtEndOfStream
     Dim sLine : sLine = tsIn.ReadLine()
     WScript.Echo tsIn.Line - 1, sLine
  Loop
  tsIn.Close
End Function

Function demoReadIniFile()
  demoReadIniFile = 0
  Dim dicIni : Set dicIni = ReadIniFile(".\21825192.ini")
  Dim sSec, sKV
  For Each sSec In dicIni.Keys()
      WScript.Echo "---", sSec
      For Each sKV In dicIni(sSec).Keys()
          WScript.Echo " ", sKV, "=>", dicIni(sSec)(sKV)
      Next
  Next
  WScript.Echo dicIni("tsout")("Path")
End Function

Function ReadIniFile(sFSpec)
  Dim dicTmp : Set dicTmp = CreateObject("Scripting.Dictionary")
  Dim tsIn   : Set tsIn   = goFS.OpenTextFile(sFSpec)
  Dim sLine, sSec, aKV
  Do Until tsIn.AtEndOfStream
     sLine = Trim(tsIn.ReadLine())
     If "[" = Left(sLine, 1) Then
        sSec = Mid(sLine, 2, Len(sLine) - 2)
        Set dicTmp(sSEc) = CreateObject("Scripting.Dictionary")
     Else
        If "" <> sLine Then
           aKV = Split(sLine, "=")
           If 1 = UBound(aKV) Then
              dicTmp(sSec)(Trim(aKV(0))) = Trim(aKV(1))
           End If
        End If
     End If
  Loop
  tsIn.Close
  Set ReadIniFile = dicTmp
End Function

output:

cscript 21825192.vbs
1 [pipapo]
2 Path=E:\dont\find\me.csv
3   Some  = thing else
4
5 [tsout]
6 Path=E:\where\ever\output.csv
7 abc=def

cscript 21825192.vbs
--- pipapo
  Path => E:\dont\find\me.csv
  Some => thing else
--- tsout
  Path => E:\where\ever\output.csv
  abc => def
E:\where\ever\output.csv

(see 这个答案 https://stackoverflow.com/a/21758109/603855作为背景)

更新评论/编辑:

我将您的部分添加到我的示例 .ini 文件中:

type 21825192.ini
[pipapo]
Path=E:\dont\find\me.csv
  Some  = thing else

[tsout]
Path=E:\where\ever\output.csv
abc=def

[Read_file]
tsout=E:.....tt.csv
tsin=E:\....gt.csv

    [col]
Number1=4
Number2=5

并且 - 为了清楚起见 - 将 demoReadIniFile() 函数的最终输出行更改为:

  WScript.Echo "tsout.Path", dicIni("tsout")("Path")
  WScript.Echo "Read_file.tsin", dicIni("Read_file")("tsin")
  WScript.Echo "col.Number2", dicIni("col")("Number2")

输出:

cscript 21825192.vbs
--- pipapo
  Path => E:\dont\find\me.csv
  Some => thing else
--- tsout
  Path => E:\where\ever\output.csv
  abc => def
--- Read_file
  tsout => E:.....tt.csv
  tsin => E:\....gt.csv
--- col
  Number1 => 4
  Number2 => 5
tsout.Path E:\where\ever\output.csv
Read_file.tsin E:\....gt.csv
col.Number2 5

所以我根本不明白为什么访问“取出数字 1=4 和数字 2=5 的 col 部分”会导致任何问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从ini文件中读取数据 的相关文章

  • 如果 vbs 脚本崩溃,请重新启动它

    我正在尝试制作一个 vb 脚本 如果它崩溃 它将重新启动另一个 vb 脚本 我搜索了又搜索 但我得到的只是如何重新启动程序 并且由于 vb 脚本是后台进程 因此当您在 Win32 Process 中搜索时它不起作用 这是我的代码 set S
  • adArray 的 VBScript / ADODB 语法问题?

    我希望有人能给我一些关于我的 vb 脚本的新视角 该脚本的主要目的是使用一些参数执行存储过程 我得到的错误是 预计声明结束 我没有做过太多的 VB 脚本编写 但从目前为止我发现的情况来看 这个错误是由于某种语法问题造成的 我已经查看这个脚本
  • 由 VBScript 运行的 xPath 中的未知方法

    错误消息是 msxml3 dll 未知方法 Record CelloXml Integration Case ServiceEvent gt last 我的代码如下所示 错误出在案例上NEW Case OLD可以很好地配合 0 在那里 On
  • VB错误“需要对象”

    当我运行以下脚本时 我在第 54 行 最后一行 收到 需要对象 错误 怎么了 Option Explicit Dim cmdString g strHostFile filepath flexnetpath importcmd dtmTod
  • ConfigParser 从 INI 文件中获取值,如下所示

    我有以下类型的 INI 文件 section1 subsection1 port 989 section1 subsection2 somethign somethign 我正在使用 Python 的 ConfigParser 来解析 IN
  • 使用 javascript 获取选择标签的名称

    我在任何地方都没有找到这个问题 所以我将其发布在这里 我有一堆选择标签 部分使用 VBScript 命名 我希望能够获取从 javascript 中的 onchange 事件调用的选择标签的名称 这是代码
  • VBScript 中的对象/类字典

    vbscript 中是否可以有对象 类的字典 例如 Class employeeclass Public first last salary End Class Dim employeedict Set employeedict Creat
  • 从命令行使用 VBScript 从 Excel 外部运行 Excel 宏

    我正在尝试从 Excel 文件外部运行 Excel 宏 我目前正在使用从命令行运行的 vbs 文件 但它一直告诉我找不到宏 这是我尝试使用的脚本 Set objExcel CreateObject Excel Application Set
  • 将 PHP 7 安装到我的服务器后,PHP 模块无法加载

    我将 PHP 7 安装到我的服务器上 因此 我没有 etc php5 和 etc php 7 0 当我运行我的网络应用程序时 我看不到任何以前的 CURL 或 fork 起初我收到这个错误消息 消息 调用未定义的函数curl init 安装
  • 如何在远程机器上执行vbs文件

    如何在不使用 PsExec 的情况下执行位于同一域中的远程计算机上的 VBScript 我尝试了以下代码 但没有运气 Sub RunCommand strComputer Command Set objWMIService GetObjec
  • 尝试绑定到 AD 用户对象时出现错误 2147463168

    我正在 Windows 2012 不是 R2 并且无法升级 AD 环境上工作 当我使用管理员 非管理员 帐户从 vbscript 运行以下代码时 它运行完美 然而 当我以普通用户运行它时 我得到一个 2147463168 这似乎是一个绑定错
  • 捕获 Unicode 文本(西里尔文)并将其插入 MS Access 数据库

    我继承了一个旧的 Web 应用程序 该应用程序使用经典 ASP 将表单中收集的数据写入 Access 2007 数据库 现在他们需要它能够收集西里尔字母的输入 我完全不熟悉代码页 字符集 也不熟悉非拉丁字母 我尝试将输入表单页面上的字符集更
  • 根据用户名获取广告详细信息

    我有一个代码可以从 AD 检索用户的详细信息 例如电子邮件地址 电话号码等 我当前使用的代码是 Set objSysInfo CreateObject ADSystemInfo strUser objSysInfo UserName msg
  • 如何使用服务器端vbscript获取图像宽度? ASP经典

    几天来我一直在尝试找到一种方法来获取驻留在我们服务器上的 png 文件的图像宽度 我正在尝试读取文件的前 24 个字节并解析出字节 17 20 的宽度 我在网上找到了几种例程 但都没有成功 奇怪的是 我似乎得到了从十六进制解码到十进制的字节
  • 如何使用 VBS 将 ping 写入文本文件

    如果我使用 VBS 运行一些 CMD 命令 在本例中为 ping 如何使用 VBS 而不是 DOS 将命令写入文本文件 Set objCmdTest WScript CreateObject WScript Shell Set Output
  • 脚本超时已过,如果要完成导入,请重新提交相同的文件,导入将恢复

    我有一个数据库 拉开拉链后的尺寸50mb拉链尺寸7mb所以当我尝试导入数据库时zipped 7mb 几分钟后 它抛出此错误 脚本超时已过 如果您想完成导入 请resubmit相同的文件和导入将恢复 我已经重新提交了 但仍然没有导入全部数据
  • VBScript 从 Shell 获取结果

    Set wshShell WScript CreateObject WSCript shell wshshell run runas 如何获取结果并显示在 MsgBox 中 您将需要使用 WshShell 对象的 Exec 方法而不是 Ru
  • 如何使用 VBScript 读取 .zip 文件的内容而不实际解压文件?

    我有一个以父目录开头的 zip 文件 我需要从文件中读取该目录 然后搜索我的硬盘以查看该目录名称是否已存在 如果存在 我会将其删除并替换为 zip 文件的内容 所有这些我都可以做 除了读取 zip 而不实际解压缩文件 zip 文件的大小可以
  • Google Chrome 总是说“Google Chrome 没有正确关闭”[重复]

    这个问题在这里已经有答案了 我在 VBS 文件脚本中使用此代码自动关闭 Chrome 浏览器 Set objExec browobj Exec tasklist fi Chr 34 imagename eq chrome exe Chr 3
  • 如何修复此“输入超出文件末尾”错误? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须找到包含以下内容的所有步骤PGM FTP然后阅读所有行 直到找到另一个没有的步骤PGM FTP 它可以是任何东西 除了FTP 我需要

随机推荐