每天我们都会得到一个平面文本文件.有些日子,文件中的行需要在处理之前删除.这些行可以出现在不同的位置,但始终以字符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)
关!只需要删除行而不是写"删除行".所以这是基于我所知道的具体需求: