小编Jac*_*ack的帖子

使用vbscript修改文本文件

每天我们都会得到一个平面文本文件.有些日子,文件中的行需要在处理之前删除.这些行可以出现在不同的位置,但始终以字符6999或7999开头.我们希望运行一个删除这些特定行的脚本.然而,这超出了我的范围,任何有一条线路开始6999的地方都会有一条线路在它开始5442之前也需要被删除,但只有它出现在6999线路之前.

我们是一家Windows商店,可以将此脚本作为Windows中简单批处理文件的一部分运行.我们不使用Unix或Linux也不希望.

文件扩展名反映了日期.今天的文件是file.100621,明天的文件是file.100622.我在这方面遇到了麻烦,因为看起来vbscript不喜欢文件.*

以下是文本文件的示例:

4006006602    03334060000100580                                                 
40060066039    0334070000100580                                                 
700600000011571006210060001255863                                               
544264287250111000025000000000040008000801                                      
6999001000000000000000000000000000000000000000000000000000                      
6999001000000000000000000000000000000000000000000000000000                      
6999001000000000000000000000000000000000000000000000000000                      
799900000011571006210030000000000                                               
8007000000115710062102530054008920  
Run Code Online (Sandbox Code Playgroud)

我们想删除此文件中的5行(5442行,3个6999行和7999行).

这是我在这个网站上找到的脚本示例,已修改并取得了一些成功,但不知道删除行的方法(只知道如何替换行中的数据).我意识到这需要进行大的修改或者需要完全抛弃,但我发布这个以提供我认为我们正在寻找的想法.我把它放在一个带有cscript.exe的目录中,并从一个简单的批处理文件中调用它:

Set objFS = CreateObject("Scripting.FileSystemObject")
strFile = "c:\temp\file.100621"
Set objFile = objFS.OpenTextFile(strFile)
Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine
    If InStr(strLine,"6999")> 0 Then
        strLine = Replace(strLine,"6999","delete line")
    End If 
    WScript.Echo strLine
Loop
Run Code Online (Sandbox Code Playgroud)

哪个让我这个:

40060066039    0334070000100580                                                 
700600000011571006210060001255863                                               
544264287250111000025000000000040008000801                                      
delete line001000000000000000000000000000000000000000000000000000                      
delete line001000000000000000000000000000000000000000000000000000                      
delete line001000000000000000000000000000000000000000000000000000                      
799900000011571006210030000000000                                               
8007000000115710062102530054008920  
Run Code Online (Sandbox Code Playgroud)

关!只需要删除行而不是写"删除行".所以这是基于我所知道的具体需求:

  1. 获取脚本来处理目录中的任何文件(并且每次只有1个,但扩展名每天都在变化)
  2. 获取脚本以删除以紧接在开始6999的行之前的5442开头的任何行
  3. 获取脚本以完全删除以6999和7999开头的行

vbscript text line

7
推荐指数
1
解决办法
5万
查看次数

标签 统计

line ×1

text ×1

vbscript ×1