You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VBScript正则提取文件中两分隔符间内容(不含分隔符)

提取指定分隔符之间内容的VBS完整实现方案

嘿,看你在写人生中第一个VBS脚本,目标是从文件里抓两个标记之间的内容对吧?我帮你把脚本补全并优化好了,刚好能实现你想要的效果——从Test.txt里提取[extractSection]和[OthersSection]之间的所有行,而且完全不包含这两个分隔符本身,结果会存到Temp.txt里。

先给你完整的可运行代码:

Set objFS = CreateObject("Scripting.FileSystemObject")
strFile = "E:\Temp\Test.txt"
strTemp = "E:\Temp\Temp.txt"

' 先清理已存在的临时文件
If objFS.FileExists(strTemp) Then 
    objFS.DeleteFile(strTemp)
End If

Set objSourceFile = objFS.OpenTextFile(strFile, 1) ' 1 = 只读模式
Set objTempFile = objFS.CreateTextFile(strTemp, True) ' True = 覆盖已有文件

blnExtract = False ' 标记是否进入提取区域

Do Until objSourceFile.AtEndOfStream
    strLine = objSourceFile.ReadLine()
    
    ' 检测起始分隔符,开启提取开关但不写入此行
    If Trim(strLine) = "[extractSection]" Then
        blnExtract = True
        Continue Do ' 跳过当前行的后续处理
    End If
    
    ' 检测结束分隔符,关闭提取开关但不写入此行
    If Trim(strLine) = "[OthersSection]" Then
        blnExtract = False
        Continue Do ' 跳过当前行的后续处理
    End If
    
    ' 如果处于提取状态,就把当前行写入临时文件
    If blnExtract Then
        objTempFile.WriteLine(strLine)
    End If
Loop

' 关闭文件,释放资源
objSourceFile.Close
objTempFile.Close
Set objSourceFile = Nothing
Set objTempFile = Nothing
Set objFS = Nothing

WScript.Echo "提取完成!结果已保存到 " & strTemp

关键逻辑说明:

  • 文件操作基础:用Scripting.FileSystemObject来处理文件的创建、读取、删除,这是VBS里处理本地文件的标准方式
  • 提取开关blnExtract:这个布尔变量就像一个“闸门”——没遇到起始标记时闸门关闭,遇到后打开,直到遇到结束标记再关闭,只有闸门打开时才会把行写入目标文件
  • 跳过分隔符行:遇到[extractSection]和[OthersSection]时,只会切换开关状态,不会把这两行写入结果,完美符合你“不含分隔符”的要求
  • Trim处理:用Trim(strLine)是为了避免行首行尾有空格导致匹配失败,如果你的文件里分隔符行绝对没有多余空格,也可以去掉Trim

小提示:

  • 如果你需要更换分隔符,只需要修改两个If Trim(strLine) = "XXX"里的字符串就行
  • 如果你的源文件里有多个相同的起始/结束标记,这个脚本会提取第一个起始到第一个结束之间的内容;要是需要处理多组区域,可以再调整循环逻辑
  • 记得确保脚本有读写E:\Temp目录的权限,不然会报错哦

内容的提问来源于stack exchange,提问作者ChrisR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:00:12